#node.js #typescript #jasmine #tsconfig #ts-node
Вопрос:
В моем проекте TypeScript, в котором выполняются тесты через ts-узел и jasmine, я определил некоторые пути в tsconfig.json
{
"compilerOptions": {
"baseUrl": "src",
"target": "es5",
"module": "commonjs",
"lib": [
"es5",
"es2015",
"DOM"
],
"moduleResolution": "Node",
"outDir": "./dist/cjs",
"declaration": true,
"sourceMap": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"noImplicitAny": false,
"removeComments": true,
"strict": true,
"paths": {
"@common": ["common/index"],
"@crashes": ["crashes/index"]
}
},
"files": [
"./src/index.ts"
]
}
Я могу импортировать по путям @common
и @crashes
в своем производственном коде, но по какой-то причине VS Code выдает мне ошибку Cannot find module '@common' or its corresponding type declarations.
в моих файлах spec.ts.
Как я могу заставить VS-код распознавать пути машинописи в моих тестах?
Ответ №1:
Это связано с тем, что intellisense VS Code будет следовать правилам в tsconfig.json
. В данном случае я не включал spec.ts
файлы в компиляцию машинописного текста. Кроме того, я не хотел включать файлы машинописного текста в выходные данные сборки моего проекта.
Решение было следующим:
- Удалите
files
свойство изtsconfig.json
- Введите новое
tsconfig.dist.json
, расширяющееtsconfig.json
и добавляющееfiles
свойство здесь
{
"extends": "./tsconfig.json",
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"outDir": "./dist/cjs",
},
"files": [
"./src/index.ts"
]
}
- Используйте новое
tsconfig.dist.json
в сценарии публикации
Кроме того, как только я сделал все это, я получил следующую ошибку, когда попытался запустить тесты jasmine с помощью ts-узла:
> ts-node node_modules/jasmine/bin/jasmine --config=spec/support/jasmine.spec.json
Error: Cannot find module '@common'
Решением этой ошибки была установка tsconfig-путей и обновление моего test
сценария в package.json
{
"scripts": {
"test": "ts-node -r tsconfig-paths/register node_modules/jasmine/bin/jasmine --config=spec/support/jasmine.spec.json"
}
}