2016-05-25 5 views
0

Я создаю приложение NodeJS, где мне нужно создать внутренние модули, чтобы лучше организовать мою логику кода и избежать необходимости писать полный путь при ссылках на такие модули.Внутренние модули InternalJS для машинописных записей, не распознанные исполнителем 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"; 

Это все работает из машинописи-х перспектива - как и в, я получаю intellisense после того, как я сгенерирую файлы определения ... но затем, когда вы запускаете фактический код NodeJS (после компиляции также .ts файлов), модули не найдены:

Error: Cannot find module 'src/internal-module' 

Я заметил, что в составленном .js файле есть этот код:

consumer.js

var a = require("src/internal-module"); 

Похоже, что это тот же синтаксис, который использует NodeJS для внешних модулей, который ищет через папку node_modules. Я что-то упускаю? Является ли проблема связана с тем, как я собираю TS?

Я компиляция TS с предложенным CommonJS режимом:

tsconfig.json

{ 
    "compilerOptions": { 
     "module": "commonjs", 
     "declaration": true 
    } 
} 

ответ

0

Try с относительным путем (с префиксом ./):

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

Я хотел чтобы избежать относительного пути по той простой причине, что потребительский файл может меняться, и тогда мне также придется изменить относительный путь. – zalow517

+0

@ zalow517 Возможно, [этот gist] (https://gist.github.com/branneman/8048520) может вам помочь? – Paleo