长话短说,我们在触发“npm start”命令之前的构建过程会在项目的根文件夹中创建指向 node_modules 文件夹的符号链接,并将其从其他地方获取。
我们在 package.json 中的 npm start 命令设置:
"scripts": {
"prestart": "npm install",
"start": "tsc @App/Other/Gulp/preCompile.txt && gulp build",
...
}
所以它确实运行 npm install,但是因为我们符号链接了 node_modules 并且 npm 检测到所有安装的包,它跳转到“tsc @App/Other/Gulp/preCompile.txt”但是这失败了,因为编译器尝试从符号链接本地文件夹访问文件“node_modules”和原始“node_modules”,来自日志的确切行:
> tsc @App/Other/Gulp/preCompile.txt && gulp build
../../../../../../Resources/Development/node_modules/@types/angular/index.d.ts(17,21): error TS2300: Duplicate identifier 'angular'.
../../../../../../Resources/Development/node_modules/@types/angular/index.d.ts(18,21): error TS2300: Duplicate identifier 'ng'.
node_modules/@types/angular/index.d.ts(17,21): error TS2300: Duplicate identifier 'angular'.
node_modules/@types/angular/index.d.ts(18,21): error TS2300: Duplicate identifier 'ng'.
我尝试将 tsconfig.json 中的 typeroots 设置为默认值“node_modules/@types”,但没有帮助。似乎可以通过 typescript 2.0 错误,因为原始路径是相对于项目根目录的......
有人有这个问题吗?