我正在使用 typescript v3.6.4
与以下 tsconfig.json
片段:
"compilerOptions": {
"moduleResolution": "node",
"baseUrl": "./src",
"paths": {
"@config/*": ["config/*"],
"@config": ["config"],
}
}
package.json 中的模块别名:
"_moduleAliases": {
"@config": "dist/config"
}
我有以下文件夹结构:
src
|-config
|-index.ts
|-app
|index.ts
|logic.ts
|-dist
现在在 app/index.ts 中,如果我这样做:
import 'module-alias/register';
import config from '@config';
和我的
npm start
命令是:"start": "node -r ts-node/register ./src/app/index.ts",
tsc
将编译成功,但 npm start
会报错:Error: Cannot find module '@config' in src/app/logic.ts
解决这个问题的唯一方法是添加
import 'module-alias/register';
在
src/app/logic.ts
看来我必须添加
import 'module-alias/register'
在我做别名的每个文件中?这是一种配置方法吗?
最佳答案
@2021
对我来说,我遇到了完全相同的问题: typescript 只允许我在每个模块都有 import 'module-alias/register';
时才使用模块别名。当它有这样的模块别名时在它的顶行。
花了将近一整天后,我明白了:
tsc
不会帮助编译这些装饰器。因此,您必须确保 js 编译代码的每个使用者都已确认并知道如何使用别名处理这些模块导入。
IE。:
node index.js
=>
node -r module-alias/register index.js
///
mocha .
=>
mocha -r module-alias/register .
关于javascript - typescript 路径别名在每个文件上都需要模块别名/注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58634070/