我试着理解require.ensure()
实际上是如何运作的。特别是,为什么我们需要将require
传递给require.ensure()
的回调?
module.exports = (function () {
require.ensure([
"./mod.js" // files that chunk will contain
], function(require) {
console.log(require("./mod.js")); // returns result of mod.js
}, 'mod'); // name of chunk file
但是,如果我将参数require
的名称更改为req
,
module.exports = (function () {
require.ensure([
"./mod.js" // files that chunk will contain
], function(req) {
console.log(req("./mod.js")); // should return result of mod.js, but doesn't
}, 'mod'); // name of chunk file
会抛出错误:
Uncaught (in promise) TypeError: Cannot read property 'call' of undefined(…)
来自这一行:
// Execute the module function
modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
为什么示例#2不起作用?
答案 0 :(得分:0)
我不是百分百肯定,但如果您查看docs,您会发现您不需要接收require函数作为回调参数。
require.ensure(["module-a", "module-b"], function(/* this should be empty */) {
var a = require("module-a");
// ...
});
所以,你可能在" req" - 这就是它未定义的原因 - 你应该使用"要求"因为,那就是你需要打电话的功能。