typescript - Hvordan fikser jeg "ReferenceError: System is not defined" når jeg kjører skript fra kommandolinjen?


Jeg prøver å lage TypeScript på serversiden (eksempelcode import mongoose from 'mongoose'; ) og jeg vet at jeg skal få systemjs initialisert først, men jeg vet ikke hvordan jeg gjør det i et serverside-skript.

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
    "noImplicitAny": true,
    "removeComments": true,
    "preserveConstEnums": true,
    "sourceMap": true
  },
  "exclude": [
    "node_modules",
    "typings/main",
    "typings/main.d.ts"
  ]
}

Svar #1

Hvis du vil bruke modulen 'system' på serversiden, må du installere systemjs-pakken og konfigurere den:

import System = require('systemjs');

System.config({
  ...
});

System.import(...);

Men etter min mening ville det være bedre å rette seg mot commonjs og kjøre det 'nativt' i node.js uten noen ekstra avhengigheter.

Som en bonus - du kan også kjøre CommonJS-moduler i nettleseren ved å bruke SystemJS som lastemotor - det støtter å laste dem rett ut av boksen.

[REDIGER]

Merk at node.js er bygget med commonjs som modulstandard. Derfor kan du bruke 'system'-moduler ved hjelp av SystemJS, men bare 'inne i' hovedprogrammet ditt som må være i commonjs-format for å kunne kjøre i nodejs.

Svar #2

Jeg løste dette ved å sette "module" : "commonjs" i tsconfig.json. Commonjs er det historiske node-modulsystemet.

Relaterte artikler