这个问题是How to use paths in tsconfig.json?的后续问题,除了我想针对单个模块进行。
我有一个模块:
src/functions/foo.ts
中实现其内容为:
export default interface Bar {
}
由其他模块使用非相对路径将其导入:
import * as Foo from "foo"
编译器找不到它:
error TS2307: Cannot find module 'foo'
此tsconfig不能解决该问题...
{
"compilerOptions": {
"noEmit": true,
"strict": true,
"module": "commonjs",
"target": "es2017",
"noImplicitAny": true,
"moduleResolution": "node",
"sourceMap": true,
"outDir": "build",
"baseUrl": ".",
"paths": {
"foo": ["src/functions/*"],
"*": [
"node_modules/*"
]
}
},
"include": [
"./src/**/*", "./typings/**/*", "./test/**/*", "./test-integration/**/*"
]
}
...但是这样做:
"paths": {
"*": [
"node_modules/*",
"src/functions/*"
]
}
为什么paths
的第一个版本不起作用---我做错了什么,我该怎么做才能确保仅在导入"src/functions/*"
时才使用foo
(并且不是在导入*
时)?
(我在Windows上使用带有Node.js的tsc版本3.1.6)。
答案 0 :(得分:2)
您正在将单词foo
分配给目录src/functions/*
的内容。
但是类似foo
只能用于指定单个文件(模块)的确切位置,而不能使用通配符,因此,如下所示:
"paths": {
"foo": ["src/functions/foo"],
"*": [
"node_modules/*"
]
}
您可能正在寻找的是
"paths": {
"foo/*": ["src/functions/*"],
"*": [
"node_modules/*"
]
}
({foo/*
而不是foo
)