" SyntaxError:意外的令牌导出(...)"

时间:2016-09-17 12:47:17

标签: angular systemjs ngrx

是的,这让我疯了。我正在使用angular2-quickstart作为入门项目。我刚刚将@ ngrx / store,@ ngrx / core和@ngrx / effects添加到项目中。现在我收到了标题中的错误。我不知道如何跟踪错误,因为我没有收到描述性错误:

(anonymous function)    @   (index):18
ZoneDelegate.invoke @   zone.js:192
Zone.run    @   zone.js:85
(anonymous function)    @   zone.js:451
ZoneDelegate.invokeTask @   zone.js:225
Zone.runTask    @   zone.js:125
drainMicroTaskQueue @   zone.js:357
ZoneTask.invoke @   zone.js:297

有关解决神秘错误SystemJS的任何想法或参考提出?

3 个答案:

答案 0 :(得分:3)

您可以使用此Repository<?, ?> getRepository(String entityClassName) { return RepositoryRegistrar.get(Class.forName(entityClassName)); } 配置

来解决加载UMD modules的问题
systemjs

我使用这些版本:

System.config({ map: { ... '@ngrx': 'node_modules/@ngrx', }, package: { ... '@ngrx/core': { main: '/bundles/core.umd.js', defaultExtension: 'js' }, '@ngrx/store': { main: '/bundles/store.umd.js', defaultExtension: 'js' }, '@ngrx/effects': { main: '/bundles/effects.umd.js', defaultExtension: 'js' }, '@ngrx/store-devtools': { main: '/bundles/store-devtools.umd.js', defaultExtension: 'js' }, '@ngrx/store-log-monitor': { main: '/bundles/store-log-monitor.umd.js', defaultExtension: 'js' }, } }) 1.2.0 / core 2.2.1 / store 2.0.0 / effects 3.1.0 / store-devtools 3.0.2

答案 1 :(得分:0)

我的项目遇到了同样的事情。似乎@ ngrx / core和@ngrx / store开始使用ES7&#34; export&#34;他们的JavaScript中的陈述。现在任何浏览器都不支持这些,并且需要转换器才能工作。

因此,为了恢复您的功能,首先要做的是将package.json更改为使用@ ngrx / *的旧版本。这当然不是长期解决方案,因此从长远来看,选项是以下之一:

  • 使用Babeljs(或类似代码)使您的编译链支持ES7。
  • 切换到Webpack及其加载器(正如您所做的那样),它们可以更好地输出符合标准的代码。你似乎已经这样做了。
  • 对一位ngrx开发人员说,谁曾认为包含任何浏览器都不支持JS的JS代码是个好主意,而没有宣布你现在需要为它做额外的工作。

答案 2 :(得分:0)

试试这个:

systemjs.config.js中的

paths: {
  // paths serve as alias
  'npm:': 'http://127.0.0.1:8000/node_modules/'
},
map: {
  ...
  '@ngrx/core': 'npm:@ngrx/core/bundles/core.umd.js',
  '@ngrx/store': 'npm:@ngrx/store/bundles/store.umd.js',
},
package: {
  ...
}

import { Store } from '@ngrx/store';正在运行。