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

时间:2017-06-06 15:40:57

标签: node.js typescript requirejs

我已经针对此问题搜索了堆栈溢出,但仍然不清楚为什么会发生这种情况/如何修复。

我想在我的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

中失败的代码行

似乎需要绕过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,则无论如何都要排除胜利。

2 个答案:

答案 0 :(得分:1)

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

  1. 重命名变量(将在npm安装或更新时消失)。

  2. 在TypeScript中,使用--types选项可以使用其中一个但不能同时使用两者。

  3. 只需删除节点输入。

答案 1 :(得分:0)

在工作中的项目中,我多次遇到此问题,我通过卸载现有node_modules并安装现有node_modules的较新版本来解决此问题。