node.js - Varför uppstår syntaxfel i en node_module som är skriven i Typescript?
node_modules/
my_module/
lib/
index.ts
src/
index.ts
Jag skapade en anpassad modul my_module och ville använda den som ett externt bibliotek. Koderna är som nedan:
[src/index.ts]
import { hello } from 'my_module'
console.log(hello)
[node_modules/min_modul/index.ts]
export const hello = "Hello"
Min tsconfig.json säger "module": "commonjs", "target": "es6", så jag trodde att importnyckelord skulle fungera bra i Typescript-filer.
Som jag förväntade mig fungerar import-nyckelordet i src/index.ts bra, men export-nyckelordet i node_modules/my_module/index.ts är en oväntad token. Hur kan jag få detta problem löst?
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)
Svar #1
Om inte projektet var konfigurerat för att transpile moduler från node_modules (detta avråds generellt eftersom det är ineffektivt och onödigt), förväntas det att externa moduler kommer att utvärderas som de är, och import-nyckelordet är inte tillåtet i CommonJS-moduler.
my_module bör kompileras innan publicering, dvs. tsc bör köras, och dist bör innehålla transpilerade *.js- och *.d.ts-typer.
main i my_module package.json bör ange ingångspunkt, "main": "dist/index.js".
Paketet kan valfritt innehålla en .npmrc-fil för att utesluta src från publicerade filer, men detta är inte nödvändigt.