我正在将打字稿LiveData
与以下android
代码段一起使用:
v3.6.4
和package.json中的模块别名:
tsconfig.json
我具有以下文件夹结构:
"compilerOptions": {
"moduleResolution": "node",
"baseUrl": "./src",
"paths": {
"@config/*": ["config/*"],
"@config": ["config"],
}
}
现在可以在app / index.ts中访问
: "_moduleAliases": {
"@config": "dist/config"
}
和我的src
|-config
|-index.ts
|-app
|index.ts
|logic.ts
|-dist
命令是:
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';
?是配置它的一种方法吗?
答案 0 :(得分:1)
解决方案很简单:
在根文件(如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 imports
答案 1 :(得分:0)
对我来说,我遇到了完全相同的问题:打字稿允许我只在每个模块都有 select * from databaseschema.dbo.tablename
时使用模块别名,而当它有这样的模块别名时。
花了将近一整天后,我明白了:
import 'module-alias/register';
不会帮助转译这些装饰器。所以你必须确保js编译代码的每个消费者都已经确认并知道如何使用别名处理这些模块导入。
即:
tsc