我花了比我要承认的更多时间,所以我把手伸了起来。
我有一个要在我的Angular 2项目中包含的模块:
import * as d3ScaleChromatic from 'd3-scale-chromatic';
这给出了一个错误:
Cannot find module 'd3-scale-chromatic'.
我已经通过NPM npm install --save @types/d3-scale-chromatic
安装。我可以说它生活在node_modules/@types/d3-scale-chromatic
。
我的tsconfig.json
看起来像这样:
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types" <-- should look here, right?
],
"lib": [
"es2016",
"dom"
]
}
}
这样我就可以看到它会在node_modules/@types中查看。
似乎与这个问题相似,但据我所知,我已经遵循了线程中的建议:https://github.com/microsoft/typescript/issues/9725。
谁能告诉我我缺少的东西可以在模块中正确引用此软件包?
编辑:仔细检查后,实际上有4个tsconfig。*我的应用中的文件。我怀疑这是问题的根源。现在的问题是,我需要保留哪个?
tsconfig.app.json
:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"baseUrl": "./",
"module": "es2015",
"types": ["@types/d3-scale-chromatic"]
},
"exclude": [
"test.ts",
"**/*.spec.ts"
]
}
tsconfig.spec.json
:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/spec",
"baseUrl": "./",
"module": "commonjs",
"target": "es5",
"types": [
"jasmine",
"node"
]
},
"files": [
"test.ts"
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
}
tsconfig.e2e.json
:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/e2e",
"baseUrl": "./",
"module": "commonjs",
"target": "es5",
"types": [
"jasmine",
"jasminewd2",
"node"
]
}
}
您还需要安装:
npm install --save d3-scale-chromatic
以及:
npm install --save @types/d3-scale-chromatic