我收到一个 webpack 警告 Critical dependency: the request of a dependency is an expression when use koa

I get a webpack warning Critical dependency: the request of a dependency is an expression when use koa

当我启动 webpack 以使用带有服务器端渲染的 koa 捆绑我的 React 应用程序时,我收到警告

WARNING in /app/node_modules/any-promise/register.js 24:14-37
[1] Critical dependency: the request of a dependency is an expression
[1]  @ /app/node_modules/any-promise/index.js
[1]  @ /app/node_modules/koa-compose/index.js
[1]  @ /app/node_modules/koa-convert/index.js
[1]  @ /app/node_modules/koa/lib/application.js
[1]  @ ./server/index.ts

我应该担心吗?

嗯,我几个小时前在 any-promise Github 存储库中回答了这个问题。

所以我把答案复制到这里:

发生这种情况是因为 register.js 在 24 行上有一个动态导入:

var lib = require(implementation)

这意味着 webpack 无法静态解析 require 并导入整个包

你可以阅读这部分 webpack 文档:https://webpack.js.org/guides/dependency-management/#require-with-expression

可以使用ContextReplacementPlugin来解决,例如,你可以在你的webpack中添加"fake"配置来抑制这个警告

plugins: [
    new ContextReplacementPlugin(/any-promise/)
]

而且我认为您不必担心,因为 webpack 只需要 "unnecessary" 打包到您的服务器应用程序中。

您也可以跟踪这个问题:https://github.com/kevinbeaty/any-promise/issues/31