Я работаю с TypeScript 3.4.5 и Webpack 4.32.2 в Windows 10 через WSL.
Я пытаюсь создать локальный пакет инструментов, который объединяет базовые классы в индексный файл, куда я их экспортирую. Независимо от того, как я экспортирую или импортирую в другие проекты, импортируемые классы всегда либо «неопределенные», либо пустой объект «{}».
Я пытался связать этот пакет 'api-tools' с помощью npm и другого локального проекта, а также попытался просто установить его с помощью метода файловой зависимости package.json, то есть: {"api-tools": "file :. ./api-tools "}, и в обоих сценариях результат один и тот же.
Вот индексный файл пакета api-tools:
index.ts:
import RestAPI from './lib/RestAPI';
export { RestAPI };
Вот библиотека RestAPI:
Lib / RestAPI.ts:
export default class RestAPI {
handle(req, res) {}
}
В потребляющем проекте я импортирую его так:
import { RestAPI } from 'api-tools';
console.log(RestAPI);
но запись этого объекта в консоль показывает, что он не определен.
Я пробовал разные синтаксисы экспорта и импорта, т. Е .:
// RestAPI.ts:
export class RestAPI {
handle() {}
}
// index.ts:
import { RestAPI } from './lib/RestAPI';
console.log(RestAPI);
exports = {
RestAPI: RestAPI
}
// also tried module.exports = {...}
Размещение этого файла console.log показывает, что экспортированный RestAPI определен правильно со всеми его свойствами. Отсюда я пытаюсь использовать его в проектах-потребителях по-разному:
// both give empty object {}
import * as RestAPI from 'api-tools';
import RestAPI from 'api-tools';
// gives undefined
import { RestAPI } from 'api-tools';
console.log(RestAPI);
Они всегда дают пустой объект, иначе он не определен.
Может ли это быть просто TypeScript / типизацией? Все прекрасно, и пути проектов кажутся хорошими, как для скомпилированного index.js, так и для файла типов index.d.ts, который определяет api-tools package.json.
package.json:
{
"main": "build/index.js",
"types": "build/src/index.d.ts",
}
tsconfig.json:
{
"compilerOptions": {
"declaration": true,
"incremental": true,
"baseUrl": "./",
"outDir": "build",
"module": "es6", // specifiy module code generation
"moduleResolution": "node",
"target": "es6", // specify ECMAScript target version
"strict": true,
"resolveJsonModule": true
},
"types": [ "webpack-env", "node" ]
}
Может ли быть какая-то проблема с этим через WSL? Или даже веб-пакет?
Я также пытался опубликовать пакет в npm и импортировать его через обычный процесс установки npm, но происходит то же самое, что заставляет меня думать, что это может быть что-то с моей конфигурацией или пониманием модулей.
Спасибо за любую помощь, пытался понять это слишком долго: -].