javascript - 尝试要求未安装但不是必需的模块时发出警告

标签 javascript webpack require

我试图在一个文件中要求一个模块,只有当该模块实际可用时才会使用该模块。所以这个模块是完全可选的。此代码将作为第 3 方库的一部分分发。问题是如果我使用 import,任何使用 webpack 的用户都会看到他们的构建失败,所以我最终使用:

let webrtc = {};
try {
  webrtc = require('my-optional-module');
} catch (err) {}

但即使使用此代码,他们也会在不需要此可选模块的项目上收到警告:

[WEB] WARNING in ./node_modules/xxx
[WEB] Module not found: Error: Can't resolve 'my-optional-module' in '/Users/xxx/node_modules/xxx'

编辑:使用下面的答案

let webrtc = {};
if(require.resolve('my-optional-module')) {
  webrtc = require('my-optional-module');
}

但是我收到这个警告:

Critical dependency: the request of a dependency is an expression

还有这个错误:

Module not found: Error: Can't resolve 'my-optional-module' in xxx

编辑2:

基于 webpack instruction做动态导入,我也试过:

var webrtc = {};
require.ensure(['my-optional-module'], function (require) {
  return webrtc = require('my-optional-module');
});

但我仍然得到:

Module not found: Error: Can't resolve 'my-optional-module' in xxx

最佳答案

好像this is a common issue在网络包中。根据configuration docs ,您可以在 webpack.config.js 中使用标志 module: { exprContextCritical: false } 来在您的项目中全局抑制此警告,尽管该标志被认为已弃用并且您可能会在 issue I linked 中找到更多强烈推荐的解决方案.

关于javascript - 尝试要求未安装但不是必需的模块时发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51131954/

相关文章:

javascript - 如何在 indesign 中要求或包含脚本?

JavaScript 函数与函数表达式

Angular2 测试 : 'Unhandled Promise rejection:' , 'Failed to load strategyTables.html'

reactjs - webpack/sass 未加载自定义字体

javascript - 如何通过 script/Javascript 代码将查询字符串参数附加到以 Require JS 编写的 script/JS 文件的 URL

mysql - require ('mysql' ) 在 OpenShift 中使用 NodeJS 服务器失败

javascript - 如何从 Handlebars 模板中选择元素?

javascript - 如何在android 5.0( Lollipop )中显示数字键盘

javascript - 在一个页面上有两个 Javascript,另一个阻止另一个工作

javascript - 如何全局公开一个 es6 模块