我正在创建一个NodeJS应用程序,我需要创建内部模块以更好地组织我的代码逻辑,避免在引用这些模块时编写完整路径。
内部module.ts
export class A {
test() {
}
}
我有一堆包含导出类的文件,然后从一个索引文件中导出。
index.ts
export * from './internal-module'
export * from './internal-module2'
然后,我使用dts-generator
为所有这些内部模块生成单个定义文件。
index.d.ts
declare module 'src/internal-module' {
export class A {
test(): void;
}
}
declare module 'src/index' {
export * from 'src/internal-module';
export * from 'src/internal-module2';
}
然后我按照以下方式使用这样的模块:
consumer.ts
import {A} from "src/internal-module";
这一切都是从Typescript的角度来看的 - 就像我在生成定义文件后得到intellisense一样......然后在运行实际的NodeJS代码时(在编译.ts
文件之后) ,没有找到模块:
Error: Cannot find module 'src/internal-module'
我注意到在编译的.js
文件中有以下代码:
consumer.js
var a = require("src/internal-module");
似乎这与NodeJS
用于外部模块的语法相同,后者在node_modules
文件夹中搜索。我错过了什么吗?问题与我编译TS的方式有关吗?
我使用建议的CommonJS
模式编译TS:
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"declaration": true
}
}
答案 0 :(得分:0)
尝试使用相对路径(以./
为前缀):
import {A} from "./src/internal-module";