node.js - TS2403: 後續的變數宣告必須具有相同的類型。在 NPM 安裝之後
我已經在 Stack Overflow 上搜尋過這個問題,但仍然不清楚為什麼會發生這種情況/如何解決。
我想在我的 Typescript 專案中使用 Node 類型定義,所以我輸入了這個指令:
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'.
我的機器上的 Node 版本是 7.0.3,安裝的類型是針對版本 + @types/[email
如果我移除並卸載 typings,我的專案就可以順利編譯。
根據錯誤訊息,看起來 typings 內容不正確!修正它很麻煩。有什麼建議嗎?
這是 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,那麼排除無論如何都不起作用。
答案#1
好,終於找到了根本原因:Node 的 index.d.ts 文件與 Require 的 index.d.ts 文件發生了衝突,兩者都宣告了一個名為 require 的變數。我找到問題的方法是將 require 重新命名為 nrequire,然後在專案中搜尋所有 nrequire 的實例。有許多解決方案,
重新命名變數(在 npm 安裝或更新時會被清除)。
在 TypeScript 中使用 --types 選項來使用其中一個而不是兩者同時使用。
- 只需移除節點類型。
答案#2
我在工作項目中多次遇到這個問題,我是透過卸載現有的 node_modules 並安裝現有 node_modules 的較新版本來解決的。
