我正在开发一个应用程序,
但后来我需要使用mediainfojs库,这个库需要wasm文件,根据我的理解,我不能使用repeat-react-app添加它,我不得不弹出它。
在弹出它之后,我去了mediainfo,了解如何在webpack上添加wasm
他们使用CopyPlugin
,但当我尝试这样做时,它抱怨我的webpack(4)和CopyPlugin的版本......所以,我决定迁移到webpack 5
这就是痛苦开始的时候.在遵循他们的migration tutorial并在我的webpack.config
上做了一系列修改之后,我在运行yarn build
时遇到了以下错误:
模块未找到:错误代码:您尝试导入福尔斯项目src/目录之外的/MyWorkspace/project/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/PencctoGenerator。不支持src/之外的相对导入。
调用此babel-preset-react-app
的唯一位置是在配置中
这里:
{
test: /\.(js|mjs|jsx|ts|tsx)$/,
include: paths.appSrc,
loader: require.resolve("babel-loader"),
options: {
customize: require.resolve(
"babel-preset-react-app/webpack-overrides"
),
字符串
这里:
{
test: /\.(js|mjs)$/,
exclude: /@babel(?:\/|\\{1,2})runtime/,
loader: require.resolve("babel-loader"),
options: {
babelrc: false,
configFile: false,
compact: false,
presets: [
[
require.resolve("babel-preset-react-app/dependencies"),
{ helpers: true },
],
],
cacheDirectory: true,
cacheCompression: isEnvProduction,
// If an error happens in a package, it's possible to be
// because it was compiled. Thus, we don't want the browser
// debugger to show the original code. Instead, the code
// being evaluated would be much more helpful.
sourceMaps: false,
},
},
型
我已经研究了这里报告的类似问题,但大多数问题似乎与动态导入静态文件或导入引用项目目录后的“..”dir有关
完整的webpack配置文件是here
我可能错过了一些非常愚蠢的东西,如果有人能指出,我会很高兴。
4条答案
按热度按时间2lpgd9681#
我也遇到过类似的问题,通过在
webpack.config
文件的顶部添加这些定义,我解决了这个问题字符串
然后将
resolve.plugins
中的ModuleScopePlugin
更新为型
pkmbmrz72#
我还试图将一个弹出的CRA项目升级到Webpack 5。我能够使用babel-preset-react-app-webpack-5继续前进,但却遇到了下一个与CRA相关的问题。
确保将
require.resolve("babel-preset-react-app/dependencies")
这样的调用替换为require.resolve("babel-preset-react-app-webpack-5/dependencies")
。此外,请注意,该软件包似乎还没有准备好投入生产,但我自己的项目仍处于早期开发阶段。
6gpjuf903#
在尝试将弹出的CRA应用程序升级到webpack v5后,我遇到了其他一些babel包的问题。我尝试了许多不同的方法,其中一些在dev中工作,但在prod中不工作,反之亦然。我在github的故事书中找到了这条评论,这是唯一一件似乎在所有场景中对我都有效的事情。
这有点烦人,但是通过简单地将我的
package.json
中的devDependencies
中的违规软件包移动到dependencies
,似乎可以解决这个问题。我可以花更多的时间来弄清楚为什么要解决这个问题,但我会把这个问题留给有更多空闲时间的人。:)g6baxovj4#
**解决方案1:**您可以将ModuleScopePlugin构造函数中的每一个错误路径都放在
webpack.config.js
的resolve.plugins
部分中,就像这样:字符串
注意事项:你必须从错误消息中输入正确的路径(如果没有在错误消息中,则没有尾随
.js
)。这个解决方案的问题是,你必须输入十几个这样的路径才能使构建成功...**解决方案2(更好?):**转到您的
package.json
并在此处添加"absoluteRuntime": false
:型
注意:双方括号不是错误。它不能与单方括号一起使用。
警告:我不明白这个解决方案的后果;用你自己的判断。看起来false是
@babel/preset-react
的默认值(见这里),所以我不确定为什么babel-preset-react-app
必须显式地设置为false(如果我没弄错的话,这是@babel/preset-react
的一个外观?)。