Kuroshiroライブラリのエラーを解決したい
ReactにてKuroshiroライブラリを利用した文字列変換アプリを作成しておりましたが、
公式に習ってライブラリをインストールし、サンプルコードを実行したらエラーが発生したという状況です。
- npm install kuroshiro
- npm install kuroshiro-analyzer-kuromoji
import { type InputType } from "../@types/PagesTypes"; import Kuroshiro from "kuroshiro"; import KuromojiAnalyzer from "kuroshiro-analyzer-kuromoji"; const saveTypingData = (typingdata: InputType): void => { const kuroshiro = new Kuroshiro(); kuroshiro .init(new KuromojiAnalyzer()) .then(function () { return kuroshiro.convert( "感じ取れたら手を繋ごう、重なるのは人生のライン and レミリア最高!", { to: "hiragana" } ); }) .then(function (result: any) { console.log(result); }); }; export default saveTypingData;
発生したエラー内容
Compiled with problems: ERROR in ./node_modules/kuromoji/src/loader/DictionaryLoader.js 20:11-26 Module not found: Error: Can't resolve 'path' in '/Users/tanakakenta/Documents/ウェブ制作練習/JavaScript/ojako-typing/node_modules/kuromoji/src/loader' BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it. If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }' - install 'path-browserify' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "path": false }
解決に向けて試したこと
発生したエラー内容を調べていくうちにWebpackのバージョンアップに伴うモジュールの非互換である、ということがわかってきたので以下の記事を参考にして対処してみた。
webpack4系から5系にアップデートした際の対応事項とかメモ
React環境にて「BREAKING CHANGE: webpack < 5 used ~」を解決する方法
まずは必要そうなパッケージのインストール
- npm install 'path-browserify'
その後は依存関係を解決するべく、Webpack.config.jsを編集してみました。
resolve: { alias: { "path": "path-browserify", //: loaderエラーにより追記 }, // または fallback: { "path": false }, //: loaderエラーにより追記 // もしくは fallback: { "path": require.resolve("path-browserify") }, //: loaderエラーにより追記 }
そしてエラーが発生している利用箇所に対して読み込み文を追記
- import path from "path-browserify"; //:エラーにより追記
これらの方法を実施してみて一時的にですがUIが復活したので、MUIとRHFで用意したフォームをSubmitしてみたところ別のエラーが発生するように。。。
Uncaught runtime errors: ERROR invalid file signature:60,33 at __webpack_modules__../node_modules/zlibjs/bin/gunzip.min.js.$.g (http://localhost:3000/static/js/bundle.js:87456:40) at xhr.onload (http://localhost:3000/static/js/bundle.js:44439:26)
Webpack.config.jsの編集によりコンパイルエラーはなくなりました。が今度は実行時エラーになってしまったのでこうなると何処を疑えばよいのか分からなくなりました。
此処から先は依存関係の泥沼になりそうなので、これらの依存関係の解消法をご教授願いたくよろしくお願い致します。
補足情報(ツールのバージョンなど)
package.json
1{ 2 "name": "ojako-typing", 3 "version": "0.1.0", 4 "private": true, 5 "dependencies": { 6 "@emotion/react": "^11.11.1", 7 "@emotion/styled": "^11.11.0", 8 "@mui/icons-material": "^5.14.8", 9 "@mui/material": "^5.14.8", 10 "@mui/styled-engine": "^5.14.8", 11 "@testing-library/jest-dom": "^5.17.0", 12 "@testing-library/react": "^13.4.0", 13 "@testing-library/user-event": "^13.5.0", 14 "@types/jest": "^27.5.2", 15 "@types/node": "^16.18.48", 16 "@types/react": "^18.2.21", 17 "@types/react-dom": "^18.2.7", 18 "axios": "^1.5.0", 19 "js-hira-kata-romanize": "git+https://github.com/ojakomaru/js-hira-kata-romanize.git", 20 "json-server": "^0.17.3", 21 "kuroshiro": "^1.2.0", 22 "kuroshiro-analyzer-kuromoji": "^1.1.0", 23 "markdown-to-jsx": "^7.3.2", 24 "node-polyfill-webpack-plugin": "^2.0.1", 25 "path-browserify": "^1.0.1", 26 "react": "^18.2.0", 27 "react-dom": "^18.2.0", 28 "react-hook-form": "^7.46.1", 29 "react-router-dom": "^6.15.0", 30 "react-scripts": "5.0.1", 31 "typescript": "^4.9.5", 32 "uuid": "^9.0.1", 33 "web-vitals": "^2.1.4" 34 }, 35 "scripts": { 36 "start": "react-scripts start", 37 "build": "react-scripts build", 38 "test": "react-scripts test", 39 "eject": "react-scripts eject" 40 }, 41 "eslintConfig": { 42 "extends": [ 43 "react-app", 44 "react-app/jest" 45 ] 46 }, 47 "browserslist": { 48 "production": [ 49 ">0.2%", 50 "not dead", 51 "not op_mini all" 52 ], 53 "development": [ 54 "last 1 chrome version", 55 "last 1 firefox version", 56 "last 1 safari version" 57 ] 58 }, 59 "devDependencies": { 60 "@types/uuid": "^9.0.4" 61 } 62}
tsconfig.json
1{ 2 "compilerOptions": { 3 "target": "es5", 4 "lib": ["dom", "dom.iterable", "esnext"], 5 "allowJs": true, 6 "skipLibCheck": true, 7 "esModuleInterop": true, 8 "allowSyntheticDefaultImports": true, 9 "strict": true, 10 "forceConsistentCasingInFileNames": true, 11 "noFallthroughCasesInSwitch": true, 12 "module": "esnext", 13 "moduleResolution": "node", 14 "resolveJsonModule": true, 15 "isolatedModules": true, 16 "noEmit": true, 17 "jsx": "react-jsx", 18 "types": ["@emotion/react/types/css-prop"] 19 }, 20 "include": ["src"] 21}
declare module 'kuroshiro'; declare module "kuroshiro-analyzer-kuromoji";

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。