134

request在准系统 webpack 项目中导入时,我收到三个警告消息。GitHub 上提供了重现该错误的最小示例(运行npm installnpm start)。

Critical dependency: the request of a dependency is an expression

我怎样才能摆脱这个警告?


更多信息:

Webpack 尝试require静态解析调用以制作最小的捆绑包。当库在 require 调用中使用变量或表达式时(例如require('' + 'nodent')在 的这些行ajv),Webpack 无法静态解析它们并导入整个包。

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

  1. 手动配置 webpack 以导入所需的库并防止出现警告。
  2. hack.js文件添加到我的项目中,以某种方式覆盖 require 调用。
  3. 升级我的图书馆。ajv-5.0.1-beta.3有一个使警告静音的修复程序。但是,如果我想使用它,我必须等到它发布,然后再har-validator发布request后续更新。如果有办法强制har-validator使用 Beta 版ajv,那将解决我的问题。
  4. 其他
4

4 回答 4

30

解决了npm install request@2.79.0 --save

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

于 2017-03-21T10:16:34.280 回答
11

替换这个

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

有了这个-

new webpack.ContextReplacementPlugin( /(.+)?angular(\\|\/)core(.+)?/, root('./src'), {} )
于 2017-11-12T11:39:27.720 回答
5

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

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

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

于 2020-04-16T15:04:47.253 回答
2

当我偶然从“量角器”导入 EventEmitter 时,我在 Angular 中得到了这个。我责怪我的 IDE 甚至建议它!

它应该从核心导入:

import { EventEmitter } from '@angular/core';
于 2021-07-27T16:08:36.653 回答