Webpack - 关键依赖:依赖的请求是表达式

Jod*_*iug 54 request webpack ajv

request在裸线webpack项目中导入时,我收到三条警告消息.在GitHub(运行npm installnpm start)上可以找到重现该错误的最小示例.

Critical dependency: the request of a dependency is an expression

我怎么能摆脱这个警告?


更多信息:

Webpack尝试require静态解析调用以创建最小的包.当库使用在需要调用变量(如这些线路require('' + 'nodent'))的WebPack不能静态地解决这些问题,并导入整个包.

我的理由是,这种动态导入在生产中是不可取的,代码最好保持无警告.这意味着我想要任何可以解决问题的解决方案.例如:

  1. 手动配置webpack以导入所需的库并防止发生警告.
  2. ajv文件添加到我的项目中以某种方式覆盖require调用.
  3. 升级我的库.hack.js有一个解决方案,使警告无声.但是,如果我想使用它,我必须等到它被释放,然后直到ajv-5.0.1-beta.3har-validator发布后续更新.如果有办法强制request使用测试版har-validator,那将解决我的问题.
  4. 其他

Sab*_*san 30

延迟加载资源时遇到的

const asset = 'config.json';
lazy(async () => await import(asset));
Run Code Online (Sandbox Code Playgroud)

通过将导入参数显式更改为字符串解决了这个问题

const asset = 'config.json';
lazy(async () => await import(`${asset}`));
Run Code Online (Sandbox Code Playgroud)


Jod*_*iug 23

解决了 npm install request@2.79.0 --save

根据作者的说法ajv,该问题可能会在request几周后的最新版本中得到解决.

  • 这个错误是不真实的烦人.仍然没有解决,打破了大量的图书馆. (12认同)
  • 对于那些后续的人 - 请求包现在已折旧。 (4认同)

Dhi*_*aNk 6

替换它

new webpack.ContextReplacementPlugin(
        /angular(\\|\/)core(\\|\/)@angular/,
        helpers.root('./src'), // location of your src
        {} // a map of your routes
    ),
Run Code Online (Sandbox Code Playgroud)

有了这个-

new webpack.ContextReplacementPlugin( /(.+)?angular(\\|\/)core(.+)?/, root('./src'), {} )
Run Code Online (Sandbox Code Playgroud)

  • 这确实有效。关于正则表达式更改为什么可以解决此问题的更深入的解释,将是不错的选择。 (3认同)
  • 有谁知道在哪里可以找到这个代码?我找不到要替换的代码。 (3认同)
  • 这行得通,是因为您告诉`System.Import`函数在`node_modules`文件夹中可以找到源代码的位置。路径会根据您使用的Angular版本而变化。希望它已经由Angular团队更好地处理。 (2认同)

Lye*_*UKH 6

此警告可以链接到(依赖项或 devDependency)中的包注入。

如果问题突然出现,请检查 package.json 中的最后修改。

如果您打算重新启动npm install.


归档时间:

查看次数:

39109 次

最近记录:

6 年,7 月 前