使用koa时,我收到了一个关键依赖项的webpack警告:“依赖项的请求是一个表达式”。

8
当我使用koa进行服务器端渲染,启动webpack对我的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

我应该担心吗?

1个回答

10

嗯,我几个小时前在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只会将“不必要”的包引入到你的服务器应用程序中。

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


ContextReplacementPlugin会从我的捆绑包中删除不必要的包吗? - user9487500
1
@Antony ContextReplacementPlugin 可以移除它,但是我的例子只是抑制了这个警告。 - svltmccc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接