TS2403:后续的变量声明必须具有相同的类型。 NPM 安装后

TS2403: Subsequent variable declarations must have the same type. After NPM install

我已经在堆栈溢出中搜索了这个问题,但我仍然不清楚为什么要 happening/how 解决这个问题。

我想在我的 Typescript 项目中使用 Node Typings,所以我输入了这个命令:

npm install @types/node --save

结果是:

c:/xyz/node_modules/@types/node/index.d.ts(89,13)
error TS2403: Subsequent variable declarations must have the same type.
Variable 'require' must be of type 'Require', but here has type 'NodeRequire'.

我的机器有节点版本 7.0.3 安装的类型适用于版本 + @types/node@7.0.28

如果我删除卸载类型,我的项目编译没有问题。

根据错误信息,似乎输入的内容不正确!修复它很麻烦。有什么建议吗?

这是 index.d.ts

中失败的代码行

似乎需要绕过 NodeRequire(接口)以支持 Require.js?

这是 TSConfig 文件:

{
    "compilerOptions": {
        "module": "amd",
        "moduleResolution": "node",
        "target": "es5",
        "noImplicitAny": false,
        "jsx": "react",
        "sourceMap": false,
        "baseUrl": ".",
        "paths": {
            "OfficeFabric/*": [
                "node_modules/office-ui-fabric-react/lib-amd/*"
            ]
        }
    } 
}

我尝试了下面的排除建议,但没有用。 Github 表示,如果模块解析为 NODE,则无论如何排除都不起作用。

好吧,终于找到了根本原因:Node 的 index.d.ts 文件与 Require 的 index.d.ts 文件冲突,两者都声明了一个名为 require 的变量。我找到它的方法是将 require 重命名为 nrequire 然后在项目中搜索 nrequire 的所有实例。有很多解决方案,

  1. 重命名变量(将在 npm 安装或更新时被清除)。

  2. 在 TypeScript 中使用 --types 选项来使用一个或另一个而不是两者。

  3. 只需删除节点输入。

我在工作项目中多次遇到这个问题,我通过卸载现有 node_modules 并安装现有 node_modules.

的更新版本来解决它

我在工作项目中多次遇到这个问题。 我通过更改 typings.d.ts` 文件解决了这个问题:

declare var require: any;