Sha*_*oux 5 javascript require webpack
我试图在文件中要求仅在模块实际可用时才使用的模块。因此该模块是完全可选的。此代码将作为第三方库的一部分分发。问题是,如果使用,任何使用webpack的用户都将看到其构建失败import,因此我最终使用了:
let webrtc = {};
try {
webrtc = require('my-optional-module');
} catch (err) {}
Run Code Online (Sandbox Code Playgroud)
但是,即使有了此代码,它们也会在不需要此可选模块的项目上得到警告:
[WEB] WARNING in ./node_modules/xxx
[WEB] Module not found: Error: Can't resolve 'my-optional-module' in '/Users/xxx/node_modules/xxx'
Run Code Online (Sandbox Code Playgroud)
编辑:使用下面的答案
let webrtc = {};
if(require.resolve('my-optional-module')) {
webrtc = require('my-optional-module');
}
Run Code Online (Sandbox Code Playgroud)
但是我得到这个警告:
Critical dependency: the request of a dependency is an expression
Run Code Online (Sandbox Code Playgroud)
而这个错误:
Module not found: Error: Can't resolve 'my-optional-module' in xxx
Run Code Online (Sandbox Code Playgroud)
编辑2:
基于webpack指令进行动态导入,我还尝试了:
var webrtc = {};
require.ensure(['my-optional-module'], function (require) {
return webrtc = require('my-optional-module');
});
Run Code Online (Sandbox Code Playgroud)
但是我仍然得到:
Module not found: Error: Can't resolve 'my-optional-module' in xxx
Run Code Online (Sandbox Code Playgroud)
看来这是 webpack 中的一个常见问题。根据配置文档module: { exprContextCritical: false },您可以使用您的标志webpack.config.js在整个项目中全局抑制此警告,尽管该标志被认为已弃用,并且您可能会在我链接的问题中找到更强烈推荐的解决方案。
| 归档时间: |
|
| 查看次数: |
400 次 |
| 最近记录: |