从命令行运行脚本时,如何修复“ReferenceError:System is not defined”?

时间:2016-03-27 06:44:51

标签: typescript systemjs

我正在尝试创建typescript服务器端(示例代码import mongoose from 'mongoose'; ),我知道我之前应该初始化systemjs,但我不知道如何在服务器端脚本中。

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"
  ]
}

2 个答案:

答案 0 :(得分:2)

如果你想在服务器端使用模块'system' - 你必须安装systemjs包并配置它:

import System = require('systemjs');

System.config({
  ...
});

System.import(...);

但在我看来,最好定位commonjs并在node.js中“本地”运行它而不需要任何额外的依赖。

作为奖励 - 您还可以使用systemjs作为加载程序在浏览器中运行commonjs模块 - 它支持开箱即用。

[编辑]

请注意,node.js是使用commonjs作为模块标准构建的。因此,您可以使用SystemJS使用“系统”模块,但只能在主程序“内部”使用必须采用commonjs格式才能在nodejs中运行。

答案 1 :(得分:1)

我通过将 "module" : "commonjs" 放在 tsconfig.json 中解决了这个问题。 Commonjs 是历史悠久的节点模块系统。