【发布时间】:2019-12-11 09:28:01
【问题描述】:
我正在尝试通过tsc 进行编译——我已经在全球范围内安装了它——我收到了一个错误:
~/AppData/Roaming/nvm/v11.15.0/node_modules/typescript/lib/lib.es2015.iterable.d.ts:41:6 - error TS2300: Duplicate identifier 'IteratorResult'.
41 type IteratorResult<T, TReturn = any> = IteratorYieldResult<T> | IteratorReturnResult<TReturn>;
~~~~~~~~~~~~~~
node_modules/@types/node/index.d.ts:170:11
170 interface IteratorResult<T> { }
~~~~~~~~~~~~~~
'IteratorResult' was also declared here.
node_modules/@types/node/index.d.ts:170:11 - error TS2300: Duplicate identifier 'IteratorResult'.
170 interface IteratorResult<T> { }
~~~~~~~~~~~~~~
~/AppData/Roaming/nvm/v11.15.0/node_modules/typescript/lib/lib.es2015.iterable.d.ts:41:6
41 type IteratorResult<T, TReturn = any> = IteratorYieldResult<T> | IteratorReturnResult<TReturn>;
~~~~~~~~~~~~~~
'IteratorResult' was also declared here.
Found 2 errors.
我已安装 @types/node 版本 10.1.0。 (@latest 有自己的问题...)
tsconfig.json
{
"compilerOptions": {
"target": "es2018",
"moduleResolution": "node",
"module": "commonjs",
"jsx": "react",
"lib": [
"dom",
"es2018",
"dom.iterable",
"scripthost"
],
"typeRoots": [
"./node_modules/@types",
"./types"
],
"types": [],
"alwaysStrict": true,
"strictNullChecks": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noUnusedLocals": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"esModuleInterop": true,
"sourceMap": true,
"outDir": "dist"
},
"files": [
"app/index.tsx"
],
"include": [
"app/**/*.ts",
"app/**/*.tsx",
"test/**/*.ts",
"test/**/*.tsx",
"node_modules/@types/**/*.d.ts",
"./types/**/*.d.ts"
],
"exclude": [
"dist"
]
}
如果我在全局卸载typescript 并运行npx tsc,它可以工作,但是在全局安装和运行typescript 应该没有问题。毕竟,这就是全局安装的重点。
与此同时,我有一个解决方法,就是给 tsc 取别名(我在 Windows 中使用 git bash)。
alias tsc="path/to/project/node_modules/.bin/tsc.cmd"
【问题讨论】:
-
当我在全球范围内从 v3.5.3 升级到 v3.6.2 时,我开始出现这个问题......所以猜测那里有一些变化。回滚帮助或在 package.json 中有脚本 "build": "tsc" 并使用 npm run build 帮助,我本地 package.jon 中的 typescript 在 v3.5.3 上,所以 npm 使用它。
标签: typescript types import