NodeJS执行者

时间:2016-05-25 13:01:29

标签: javascript node.js typescript commonjs

我正在创建一个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
    }
}

1 个答案:

答案 0 :(得分:0)

尝试使用相对路径(以./为前缀):

import {A} from "./src/internal-module";