我正在使用带有以下tsconfig.json片段的typescript v3.6.4:
"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-06-24 22:08:50
@2021
对我来说,我遇到了完全相同的问题: typescript允许我只在每个模块的顶行都有import 'module-alias/register';时才使用模块别名,而每个模块都有这样的模块别名。
几乎花了一整天的时间,我明白了:
tsc 不会帮助转换这些装饰器。因此,您必须确保js编译代码的每个使用者都已删除,并知道如何使用alias.处理这些模块导入。
即:
node index.js
=>
node -r module-alias/register index.js
///
mocha .
=>
mocha -r module-alias/register .发布于 2020-11-13 02:34:54
这个问题的解决方案非常简单:
在根文件中,比如app/index.ts,将import 'module-alias/register';放在所有其他导入的末尾,这样就不需要把它放到每个文件中。它对我不起作用,因为我将导入放在所有其他导入之前,而不是放在后面。
例如:
import express from 'express';
import corsFilter from 'cors';
...
import 'module-alias/register'; // This has to be after all other importshttps://stackoverflow.com/questions/58634070
复制相似问题