类型'NodeRequire'上不存在属性'ensure'

时间:2017-01-21 01:20:20

标签: node.js webpack webpack-2

我正在尝试使用webpack 2进行代码拆分。

根据此文档:https://webpack.js.org/guides/code-splitting-require/

以下代码应将some.css包含在名为“something”

的新块中
require.ensure([], function(require) {
    require('some.css');
}, 'something');

但是当我运行它时,我收到了这个错误:

ERROR in ./src/index.ts
(4,9): error TS2339: Property 'ensure' does not exist on type 'NodeRequire'.

有关如何修复它的任何想法? 感谢

2 个答案:

答案 0 :(得分:4)

我解决这个问题的方法是创建我自己的界面 - WebpackRequire - 使用NodeRequire 1 扩展ensure

interface WebpackRequire extends NodeRequire {
  ensure(
    dependencies: string[],
    callback: (require: WebpackRequire) => void,
    errorCallback?: (error: Error) => void,
    chunkName?: string
  ): void;
};

如果您只有require.ensure的单个实例,则可以使用WebpackRequire将其强制转换为(require as WebpackRequire).ensure,但由于我多次使用require模块,我在模块的顶部范围创建了本地WebpackRequire,输入为const require: WebpackRequire = (window as any).require; ,如下所示:

ensure

1 我从Webpack docs 获得了FormBorderStyle的类型

答案 1 :(得分:0)

我需要一个javascript文档然后执行了require。不完全是最好的解决方案,但确实有效