“NodeRequire”类型上不存在属性“确保”

Posted

技术标签:

【中文标题】“NodeRequire”类型上不存在属性“确保”【英文标题】:Property 'ensure' does not exist on type 'NodeRequire' 【发布时间】:2017-06-06 02:24:17 【问题描述】:

我正在尝试 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'.

关于如何解决它的任何想法? 谢谢

【问题讨论】:

我也有同样的问题。你找到解决办法了吗? 【参考方案1】:

我解决这个问题的方法是创建我自己的接口 - WebpackRequire - 它扩展了 NodeRequireensure1

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

如果您只有一个 require.ensure 实例,则可以使用 (require as WebpackRequire).ensure 将其类型转换为 WebpackRequire,但由于我在一个模块中多次使用它,因此我创建了本地 require在模块的顶部范围内,将类型转换为 WebpackRequire,如下所示:

const require: WebpackRequire = (window as any).require;

1我从Webpack docs得到ensure的类型

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于“NodeRequire”类型上不存在属性“确保”的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript:类型“”上不存在属性

错误 TS2339:类型“”上不存在属性“包含”

类型“”上不存在属性“forEach”

类型“T”上不存在属性 - 一般问题

类型“”上不存在 Typescript 错误属性“成员”

“EventTarget”类型上不存在属性“值”