Как исправить руль «модуль не найден» в машинописи при компиляции в UMD - PullRequest
2 голосов
/ 12 мая 2019

Я пытаюсь использовать рули в клиентской библиотеке 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("");
}

Ожидаемый результат - использование руля как части моей библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...