将"react-scripts": "4.0.3"更新为"react-scripts": "5.0.1" 后出现错误,请告诉我为什么会收到此错误或如何解决此问题...
./node_modules/mime-types/index.js 中的错误 15:14-37
找不到模块:错误:无法解析“C:\work\sams-frontend-su\node_modules\mime-types”中的“路径”
重大更改:webpack < 5 默认情况下包含 Node.js 核心模块的 Polyfill。这已不再是这种情况。验证您是否需要此模块并为其配置一个polyfill。
如果你想包含一个polyfill,你需要: - 添加一个后备 'resolve.fallback: { "path": require.resolve("path-browserify") }' - 安装 'path-browserify' 如果你不这样做想要包含一个polyfill,你可以使用一个空模块,如下所示:resolve.fallback: { "path": false }
另外,我在父路径中创建了一个 webpack.config.js 文件
module.exports = {
resolve: {
fallback: { "path": require.resolve("path-browserify") },
},
};
Run Code Online (Sandbox Code Playgroud)
包.json
{
"dependencies": {
"@testing-library/jest-dom": "^5.16.4",
"@testing-library/react": "^13.2.0",
"@testing-library/user-event": "^13.5.0",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"@babel/cli": "^7.17.10",
"@babel/core": "^7.18.0",
"@babel/preset-env": "^7.18.0",
"@emotion/react": "^11.9.0",
"@emotion/styled": "^11.8.1",
"@mui/icons-material": "^5.8.0",
"@mui/lab": "^5.0.0-alpha.82",
"@mui/material": "^5.8.0",
"@mui/styles": "^5.8.0",
"antd": "^4.20.6",
"axios": "^0.27.2",
"formik": "^2.2.9",
"mime-types": "^2.1.35",
"moment": "^2.29.3",
"react": "^18.1.0",
"react-dom": "^18.1.0",
"react-csv": "^2.2.2",
"react-draggable": "^4.4.5",
"react-scripts": "^5.0.1",
"react-table": "^7.8.0",
"react-window": "^1.8.7",
"spelling": "^2.0.2",
"yup": "^0.32.11"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0",
"react-dom": "^16.8.0 || ^17.0.0"
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,在 v4 和 v5 之间,react-scriptsWebpack 也从 v4 更新到了 v5。过去,当从浏览器代码导入时,它会自动填充 Node.js 模块,但这种情况在 v5 中发生了变化。现在,您必须明确告知 Webpack 它应该使用 polyfill。
你的webpack.config.js不起作用,因为react-scripts忽略这个文件并使用它附带的文件。有一个名为craco(https://github.com/gsoft-inc/craco)的第 3 方包,它使您可以修补 Webpack 配置,但它没有标记为兼容 v5,所以我怀疑它是否会起作用。
然后您可以做两件事:
a) 降级到 v4 并停留在那里,直到 Craco 准备好使用 v5。
b) 使用浏览器原生库mime来代替
该库不使用任何 Node.js API,因此浏览器原生支持它。试一试。
路径依赖是 Node.js 运行时的一部分。替代方法是仅使用mime模块。这个模块是为了解决这个问题而设计的。它使用与该模块相同的数据源,并且具有所有相同的映射。
npm install mime
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8312 次 |
| 最近记录: |