Почему синтаксическая ошибка возникает в Typescript-написанном node_module? - PullRequest
0 голосов
/ 04 декабря 2018
node_modules/
  my_module/
    lib/
      index.ts
src/
  index.ts

Я сделал пользовательский модуль my_module и хотел использовать его как внешнюю библиотеку.Коды приведены ниже:

[src / index.ts]

import { hello } from 'my_module'
console.log(hello)

[node_modules / my_module / index.ts]

export const hello = "Hello"

My tsconfig.jsonговорит "module": "commonjs", "target": "es6", поэтому я подумал, что ключевые слова импорта будут хорошо работать в файлах Typescript

Как я и ожидал, ключевое слово import в src/index.ts работает хорошо, но ключевое слово export в node_modules/my_module/index.ts - неожиданный токен.Как я могу решить эту проблему?

export const hello = "hello"
^^^^^^

SyntaxError: Unexpected token export
    at new Script (vm.js:83:7)
    at createScript (vm.js:267:10)
    at Object.runInThisContext (vm.js:319:10)
    at Module._compile (internal/modules/cjs/loader.js:685:28)
    at Module._extensions..js (internal/modules/cjs/loader.js:733:10)
    at Object.require.extensions.(anonymous function) [as .ts] (/usr/local/lib/node_modules/ts-node/src/index.ts:431:14)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
    at Function.Module._load (internal/modules/cjs/loader.js:552:3)
    at Module.require (internal/modules/cjs/loader.js:658:17)

1 Ответ

0 голосов
/ 04 декабря 2018

Если проект не был настроен для переноса модулей из node_modules (это обычно не рекомендуется, поскольку это неэффективно и не нужно), ожидается, что внешний модуль будет оцениваться как есть, а ключевое слово import недопустимо в модулях CommonJS.

my_module должен быть скомпилирован перед публикацией, т. Е. tsc должен быть выполнен, а dist должен содержать переданные * .js и * .d.ts печатания.

main в my_module package.json следует указать точку входа, "main": "dist/index.js".

Пакет может дополнительно содержать .npmrc файл , чтобы исключить src из опубликованных файлов, но это не такнеобходимо.

...