传递要求函数到require.ensure的重点是什么?

时间:2016-12-12 11:57:26

标签: javascript webpack webpack-2

我试着理解require.ensure()实际上是如何运作的。特别是,为什么我们需要将require传递给require.ensure()的回调?

1。这有效:

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

2。这不起作用:

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不起作用?

1 个答案:

答案 0 :(得分:0)

我不是百分百肯定,但如果您查看docs,您会发现您不需要接收require函数作为回调参数。

require.ensure(["module-a", "module-b"], function(/* this should be empty */) {
   var a = require("module-a");
   // ...
});

所以,你可能在" req" - 这就是它未定义的原因 - 你应该使用"要求"因为,那就是你需要打电话的功能。