尝试运行Angular Universal时错误“Unexpected token import”

我正在尝试生成一个Angular Universal,但是我遇到了一个问题“ts-node server.ts”。 输出logging如下:

$ npm run start > prestart public-site > ng build --prod && ngc 12% building modules 24/32 modules 8 active ...lic-site/src/styles.scssNode#moveTo was deprecated. Use Container#append. Hash: Time: 76999ms chunk {0} 0.chunk.js 11.9 kB {1} {2} {3} {4} {5} {6} chunk {14} inline.bundle.js (inline) 0 bytes > start public-site > ts-node src/server.ts public-site/node_modules/md2/module.js:7 import { NgModule } from '@angular/core'; ^^^^^^ SyntaxError: Unexpected token import at createScript (vm.js:53:10) at Object.runInThisContext (vm.js:95:10) at Module._compile (module.js:543:28) at Object.Module._extensions..js (module.js:580:10) at Module.load (module.js:488:32) at tryModuleLoad (module.js:447:12) at Function.Module._load (module.js:439:3) at Module.require (module.js:498:17) at require (internal/module.js:20:19) at Object.<anonymous> (public-site/src/app/app.module.ts:11:1) npm ERR! Darwin 16.5.0 npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "start" npm ERR! node v7.10.0 npm ERR! npm v4.2.0 npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! start: `ts-node src/server.ts` npm ERR! Exit status 1 npm ERR! 

如果你有任何想法如何解决这个问题,将不胜感激。

只是为将来访问这个人的笔记(像我一样),hammerjs和jquery会导致问题,hammerjs是stream行的材料2 lib的一部分,所以这是人们进行这种转变的一个共同的问题。

最糟糕的是,你可以拿出第三方库并重新添加它们,每次启动服务器,看看它是否工作。

你也可以限制什么时候在浏览器中渲染的时候被调用;

 import { PLATFORM_ID } from '@angular/core'; import { isPlatformBrowser, isPlatformServer } from '@angular/common'; constructor(@Inject(PLATFORM_ID) private platformId: Object) { ... } ngOnInit() { if (isPlatformBrowser(this.platformId)) { // Client only code. ... } if (isPlatformServer(this.platformId)) { // Server only code. ... } } 

– 从通用启动器中提取: https : //github.com/angular/universal-starter

所以,如果你需要使用jQuery,确保你所做的任何调用都在'isPlatformBrowser'内,因为jquery和其他类似的libs使用DOM ,并且DOM不存在于节点后端,从而导致错误。

所有的3d方libs应该被转发。 ts-node不会传输es2015模块。 我使用webpack来转储像@ angular / material和@ ngx-translate这样的模块。 看看我的存储库中的例子: https : //github.com/SergiusSidorov/cli-universal-demo

我希望这可以帮助你。