webpack 错误:您尝试导入的babel-preset福尔斯项目src/目录中

yacmzcpb  于 2023-11-19  发布在  Webpack
关注(0)|答案(4)|浏览(193)

我正在开发一个应用程序,
但后来我需要使用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的唯一位置是在配置中
这里:

  1. {
  2. test: /\.(js|mjs|jsx|ts|tsx)$/,
  3. include: paths.appSrc,
  4. loader: require.resolve("babel-loader"),
  5. options: {
  6. customize: require.resolve(
  7. "babel-preset-react-app/webpack-overrides"
  8. ),

字符串
这里:

  1. {
  2. test: /\.(js|mjs)$/,
  3. exclude: /@babel(?:\/|\\{1,2})runtime/,
  4. loader: require.resolve("babel-loader"),
  5. options: {
  6. babelrc: false,
  7. configFile: false,
  8. compact: false,
  9. presets: [
  10. [
  11. require.resolve("babel-preset-react-app/dependencies"),
  12. { helpers: true },
  13. ],
  14. ],
  15. cacheDirectory: true,
  16. cacheCompression: isEnvProduction,
  17. // If an error happens in a package, it's possible to be
  18. // because it was compiled. Thus, we don't want the browser
  19. // debugger to show the original code. Instead, the code
  20. // being evaluated would be much more helpful.
  21. sourceMaps: false,
  22. },
  23. },


我已经研究了这里报告的类似问题,但大多数问题似乎与动态导入静态文件或导入引用项目目录后的“..”dir有关
完整的webpack配置文件是here
我可能错过了一些非常愚蠢的东西,如果有人能指出,我会很高兴。

2lpgd968

2lpgd9681#

我也遇到过类似的问题,通过在webpack.config文件的顶部添加这些定义,我解决了这个问题

  1. const babelRuntimeEntry = require.resolve('babel-preset-react-app');
  2. const babelRuntimeEntryHelpers = require.resolve(
  3. '@babel/runtime/helpers/esm/assertThisInitialized',
  4. { paths: [babelRuntimeEntry] }
  5. );
  6. const babelRuntimeRegenerator = require.resolve('@babel/runtime/regenerator', {
  7. paths: [babelRuntimeEntry]
  8. });

字符串
然后将resolve.plugins中的ModuleScopePlugin更新为

  1. new ModuleScopePlugin(paths.appSrc, [
  2. paths.appPackageJson,
  3. babelRuntimeEntry,
  4. babelRuntimeEntryHelpers,
  5. babelRuntimeRegenerator])

展开查看全部
pkmbmrz7

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")
此外,请注意,该软件包似乎还没有准备好投入生产,但我自己的项目仍处于早期开发阶段。

6gpjuf90

6gpjuf903#

在尝试将弹出的CRA应用程序升级到webpack v5后,我遇到了其他一些babel包的问题。我尝试了许多不同的方法,其中一些在dev中工作,但在prod中不工作,反之亦然。我在github的故事书中找到了这条评论,这是唯一一件似乎在所有场景中对我都有效的事情。
这有点烦人,但是通过简单地将我的package.json中的devDependencies中的违规软件包移动到dependencies,似乎可以解决这个问题。我可以花更多的时间来弄清楚为什么要解决这个问题,但我会把这个问题留给有更多空闲时间的人。:)

g6baxovj

g6baxovj4#

**解决方案1:**您可以将ModuleScopePlugin构造函数中的每一个错误路径都放在webpack.config.jsresolve.plugins部分中,就像这样:

  1. new ModuleScopePlugin(paths.appSrc, [
  2. '/MyWorkspace/project/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator'
  3. ]

字符串
注意事项:你必须从错误消息中输入正确的路径(如果没有在错误消息中,则没有尾随.js)。这个解决方案的问题是,你必须输入十几个这样的路径才能使构建成功...

**解决方案2(更好?):**转到您的package.json并在此处添加"absoluteRuntime": false

  1. "babel": {
  2. "presets": [
  3. [
  4. "react-app",
  5. {
  6. "absoluteRuntime": false
  7. }
  8. ]
  9. ]
  10. }


注意:双方括号不是错误。它不能与单方括号一起使用。
警告:我不明白这个解决方案的后果;用你自己的判断。看起来false是@babel/preset-react的默认值(见这里),所以我不确定为什么babel-preset-react-app必须显式地设置为false(如果我没弄错的话,这是@babel/preset-react的一个外观?)。

展开查看全部

相关问题