【问题标题】:TS2403: Subsequent variable declarations must have the same type. After NPM installTS2403:后续变量声明必须具有相同的类型。 NPM 安装后
【发布时间】:2022-02-15 21:21:03
【问题描述】:

我已经搜索过堆栈溢出的问题,但仍不清楚为什么会发生这种情况/如何解决。

我想在我的 Typescript 项目中使用节点类型,所以我输入了这个命令:

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,那么 exclude 无论如何都不起作用。

【问题讨论】:

  • 您是否尝试将"exclude": ["node_modules"] 添加到您的tsconfig.json
  • tsconfig.json 已经有 "exclude": ["node_modules"] 行,但我也有同样的问题。

标签: node.js typescript requirejs


【解决方案1】:

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

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

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

  3. 只需删除节点类型。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      declare var require: any;
      

      【讨论】:

        猜你喜欢
        • 2016-11-07
        • 2019-09-04
        • 2020-01-06
        • 1970-01-01
        • 2017-11-15
        • 2018-04-18
        • 1970-01-01
        • 2017-07-14
        • 2016-04-11
        相关资源
        最近更新 更多