在准系统webpack项目中导入request
时,我收到三条警告消息。 GitHub(运行npm install
和npm start
)提供了重现错误的最小示例。
Critical dependency: the request of a dependency is an expression
我怎样摆脱这个警告?
更多信息:
Webpack尝试静态解析require
次调用以创建最小的包。当库在require调用中使用变量或表达式时(例如require('' + 'nodent')
ajv
中的hack.js
),Webpack无法静态解析它们并导入整个包。
我的理由是,这种动态导入在生产中是不可取的,并且代码最好保持警告。这意味着我想要任何可以解决问题的解决方案。 E.g:
ajv-5.0.1-beta.3
文件添加到我的项目中,以某种方式覆盖require调用。har-validator
有一个解决方案可以使警告无声。但是,如果我想使用它,我必须等到它被释放,然后直到request
和har-validator
释放后续更新。如果有办法强制ajv
使用{{1}}的测试版,则可以解决我的问题。答案 0 :(得分:21)
解决npm install request@2.79.0 --save
根据ajv
的作者的说法,问题可能会在几周内在request
的最新版本中得到解决。
答案 1 :(得分:6)
替换此
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'), {} )
答案 2 :(得分:1)
此警告可以链接到(依赖项或devDependencies)中的程序包注入。
如果问题突然出现,请检查package.json中的最后修改。
如果您打算重新启动npm install
,请考虑删除package-lock.json。
答案 3 :(得分:0)
当我不小心从“量角器”导入 EventEmitter 时,我在 Angular 中得到了这个。我责怪我的 IDE 提出了它!
它应该从核心导入:
import { EventEmitter } from '@angular/core';