tsconfig compilerOptions“module”:“system”not working

在angular2 5分钟的教程中,他们使用“system”作为tsconfig中的模块。 我有systemjs作为node_module,但是当试图启动我的服务器时,我得到的System is not defined ,从编译js文件,看起来像这样的第一行: System.register(['http', 'express', './config/index', 'path'], function(exports_1) {

为什么System未定义,即使我把它作为一个节点的依赖?

我试图改变它commonjs,然后编译的js看起来更简单。 但是,然后我在angular度应用程序中得到错误。

我为了与SystemJs一起工作而错过了什么?

编辑

我想我解释我的问题是不好的。 从导入模块更改为我的server.ts文件“JavaScript风格”( var http = require('http'); )我猜“打字稿样式”( import * as http from 'http';import * as http from 'http';我开始得到错误上面指定。 当做它的JavaScript风格编译js看起来就像ts( var http = require('http'); )然而,当它做“打字稿风格”它被编译与模块导入使用系统(指定的代码行以上)。 所以当我试图启动节点服务器而不是在浏览器中出现这个错误。

我尝试更改编译选项“模块”为“commonjs”而不是“系统”在tsconfig.json,这样做会导致浏览器错误 ( 这个错误 ,只有解决scheme似乎不适合)一些奇怪的原因,所以我想我会尝试与“系统”。 但后来我遇到了没有定义System的问题。 那么在启动节点服务器时如何访问系统呢?

看起来你在index.html中缺less对system.js的引用。 Angular是由浏览器运行的,所以它不足以作为节点依赖,浏览器不会自动加载它。 当然,不要在node.js中运行服务器端的angular度应用程序。 你想在服务器端(node.js)做什么是运行一些web服务器,将内容提供给浏览器(http-server,lite-server等)。 然后在浏览器中打开由web服务器提供的index.html,然后使用system.js运行angular2应用程序以进行模块加载。

如果您在index.html中引用了system.js,而您并未尝试在node.js服务器端运行它,请使用任何现代浏览器的开发工具,确保path正确并加载。