Module not found: Error: You attempted to import babel-preset which falls outside of the project src/ directory
Module not found: Error: You attempted to import babel-preset which falls outside of the project src/ directory
我正在开发一个使用 create-react-app 创建的应用程序
但后来我需要使用 mediainfojs 库,这个库需要 wasm 文件,根据我的理解,我不能使用 create-react-app 添加它,我不得不弹出它。
弹出后,我去了how to add the wasm on the webpack
上的mediainfo信息
他们使用 CopyPlugin
,但是当我尝试这样做时,它抱怨我的 webpack (4) 和 CopyPlugin 的版本....所以,我决定迁移到 webpack 5
那是痛苦开始的时候......在按照他们的 migration tutorial 对我的 webpack.config
做了一堆修改后,我在运行 yarn build
时遇到了以下错误:
Module not found: Error: You attempted to import /MyWorkspace/project/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator which falls outside of the project src/ directory. Relative imports outside of src/ are not supported.
唯一调用此 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,
},
},
我调查了此处报告的类似问题,但其中大部分似乎与动态导入的静态文件或在项目目录后引用“..”目录的导入有关
完整的 webpack 配置文件是 here
我可能遗漏了一些非常愚蠢的东西,如果有人能指出,我会很高兴。
我也在尝试将一个弹出的 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")
。
此外,请注意该软件包似乎尚未准备好投入生产,但我自己的项目仍处于早期开发阶段。
我遇到了类似的挑战,我能够通过在 webpack.config
文件的顶部添加这些定义来解决这个问题
const babelRuntimeEntry = require.resolve('babel-preset-react-app');
const babelRuntimeEntryHelpers = require.resolve(
'@babel/runtime/helpers/esm/assertThisInitialized',
{ paths: [babelRuntimeEntry] }
);
const babelRuntimeRegenerator = require.resolve('@babel/runtime/regenerator', {
paths: [babelRuntimeEntry]
});
然后 resolve.plugins
中的 ModuleScopePlugin
更新为
new ModuleScopePlugin(paths.appSrc, [
paths.appPackageJson,
babelRuntimeEntry,
babelRuntimeEntryHelpers,
babelRuntimeRegenerator])
我正在开发一个使用 create-react-app 创建的应用程序
但后来我需要使用 mediainfojs 库,这个库需要 wasm 文件,根据我的理解,我不能使用 create-react-app 添加它,我不得不弹出它。
弹出后,我去了how to add the wasm on the webpack
上的mediainfo信息他们使用 CopyPlugin
,但是当我尝试这样做时,它抱怨我的 webpack (4) 和 CopyPlugin 的版本....所以,我决定迁移到 webpack 5
那是痛苦开始的时候......在按照他们的 migration tutorial 对我的 webpack.config
做了一堆修改后,我在运行 yarn build
时遇到了以下错误:
Module not found: Error: You attempted to import /MyWorkspace/project/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator which falls outside of the project src/ directory. Relative imports outside of src/ are not supported.
唯一调用此 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,
},
},
我调查了此处报告的类似问题,但其中大部分似乎与动态导入的静态文件或在项目目录后引用“..”目录的导入有关
完整的 webpack 配置文件是 here
我可能遗漏了一些非常愚蠢的东西,如果有人能指出,我会很高兴。
我也在尝试将一个弹出的 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")
。
此外,请注意该软件包似乎尚未准备好投入生产,但我自己的项目仍处于早期开发阶段。
我遇到了类似的挑战,我能够通过在 webpack.config
文件的顶部添加这些定义来解决这个问题
const babelRuntimeEntry = require.resolve('babel-preset-react-app');
const babelRuntimeEntryHelpers = require.resolve(
'@babel/runtime/helpers/esm/assertThisInitialized',
{ paths: [babelRuntimeEntry] }
);
const babelRuntimeRegenerator = require.resolve('@babel/runtime/regenerator', {
paths: [babelRuntimeEntry]
});
然后 resolve.plugins
中的 ModuleScopePlugin
更新为
new ModuleScopePlugin(paths.appSrc, [
paths.appPackageJson,
babelRuntimeEntry,
babelRuntimeEntryHelpers,
babelRuntimeRegenerator])