Я пытаюсь использовать рули в клиентской библиотеке JavaScript, которую пишу в машинописи, когда я использую import * as Handlebars from 'handlebars'
, я получаю сообщение об ошибке, в котором говорится, что машинопись "не может найти модуль машинописи"
Я попытался импортировать import * as Handlebars from 'handlebars/runtime'
вместо handlebars
, не повезло.
Я нашел похожую проблему здесь и попытался добавить подстановку ручек в мой файл tsconfig, это не помогает найти модуль
Причина, по которой я чувствую, что важно указать, что я запускаю компиляцию umd, заключается в том, что если я установил ее на компиляцию commonjs, то, похоже, у него не возникнет проблем с поиском этой ссылки, но из исследования, в котором я выполнил commonjs, рекомендуется только когда вы хотите использовать библиотеку как часть приложения nodejs (возможно, работающего в серверной среде), поскольку я создаю библиотеку на стороне клиента, которую я создаю, я не верю, что это подходящее решение, хотя кто-то может в состоянии доказать, что я неправ. Похоже, что таргетирование umd обеспечивает компиляцию как commonjs, так и amd, поэтому я подумал, что это будет лучшее решение для обоих миров
TSconfig:
{
"compilerOptions": {
"target": "es5",
"module": "umd",
"strict": true,
// "paths": {
// "handlebars": ["handlebars/dist/handlebars.min.js"]
// },
"esModuleInterop": true
}
}
пакет JSON:
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"handlebars": "^4.1.2"
}
}
main.ts:
import * as Handlebars from 'handlebars'
export function hello() {
Handlebars.compile("");
}
Ожидаемый результат - использование руля как части моей библиотеки.