在旧项目中有一个方法requireAsync实现异步加载一个或多个模块:
/**
* 异步请求模块文件
* @param {String} uri [模块路径,支持路径数组]
* @param {Function} callback [模块请求成功后的回调函数]
* @param {Function} context [作用域]
*/
function requireAsync(uri, callback, context) {
// Seajs
if (util.isFunc(require.async)) {
require.async(uri, function() {
callback.apply(context, arguments);
});
}
// requirejs
else {
require(typeof uri === 'string' ? [uri] : uri, function() {
callback.apply(context, arguments);
});
}
},
最近项目要改成webpack的部署方式,结果这个方法就报错了:
WARNING in ./src/module.js
Critical dependencies:
103:18-25 require function is used in a way in which dependencies cannot be statically extracted
104:3-10 require function is used in a way in which dependencies cannot be statically extracted
109:23-30 require function is used in a way in which dependencies cannot be statically extracted
110:3-10 require function is used in a way in which dependencies cannot be statically extracted
@ ./src/module.js 103:18-25 104:3-10 109:23-30 110:3-10
查了下是因为webpack下require是不能传变量或数组的,那么怎样才能在webpack的编译中实现一个requireAsync的函数,并且能在脱离webpack后能正常使用呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
参考这个:https://github.com/webpack/webpack/issues/240
遇到了同样的问题,发现了一个东西:seajs-loader
直接直接将require.async转为webpack的ensure语法
并异步加载