Я создаю приложение 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
}
}
Я хотел чтобы избежать относительного пути по той простой причине, что потребительский файл может меняться, и тогда мне также придется изменить относительный путь. – zalow517
@ zalow517 Возможно, [этот gist] (https://gist.github.com/branneman/8048520) может вам помочь? – Paleo