"SyntaxError: Unexpected token export(…)"
"SyntaxError: Unexpected token export(…)"
这让我抓狂。我正在使用 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 引发的神秘错误的任何想法或参考?
我的项目只是 运行 变成了同样的东西。看起来 @ngrx/core 和 @ngrx/store 开始在他们的 javascript 中使用 ES7 "export" 语句。现在任何浏览器都不支持这些,需要 t运行spiler 才能工作。
因此,为了恢复您的功能,要做的第一件事就是更改您的 package.json 以使用 @ngrx/* 的旧版本。这当然不是一个长期的解决方案,所以从长远来看,选项是以下之一:
- 使用 Babeljs(或类似的)使你的编译链支持 ES7。
- 切换到 Webpack 及其加载器(正如您所做的那样),它们更擅长可靠地输出符合标准的代码。您似乎已经这样做了。
- 向 ngrx 开发人员大喊大叫,说谁曾认为包含任何浏览器都不支持的 JS 代码是个好主意,却没有宣布您现在需要为此做额外的工作。
试试这个:
在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';
开始工作。
您可以使用此 systemjs
配置解决加载 UMD modules
问题:
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' },
}
})
我正在使用这些版本:
core
1.2.0/store
2.2.1/effects
2.0.0/store-devtools
3.1.0/store-log-monitor
3.0.2
这让我抓狂。我正在使用 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 引发的神秘错误的任何想法或参考?
我的项目只是 运行 变成了同样的东西。看起来 @ngrx/core 和 @ngrx/store 开始在他们的 javascript 中使用 ES7 "export" 语句。现在任何浏览器都不支持这些,需要 t运行spiler 才能工作。
因此,为了恢复您的功能,要做的第一件事就是更改您的 package.json 以使用 @ngrx/* 的旧版本。这当然不是一个长期的解决方案,所以从长远来看,选项是以下之一:
- 使用 Babeljs(或类似的)使你的编译链支持 ES7。
- 切换到 Webpack 及其加载器(正如您所做的那样),它们更擅长可靠地输出符合标准的代码。您似乎已经这样做了。
- 向 ngrx 开发人员大喊大叫,说谁曾认为包含任何浏览器都不支持的 JS 代码是个好主意,却没有宣布您现在需要为此做额外的工作。
试试这个:
在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';
开始工作。
您可以使用此 systemjs
配置解决加载 UMD modules
问题:
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' },
}
})
我正在使用这些版本:
core
1.2.0/store
2.2.1/effects
2.0.0/store-devtools
3.1.0/store-log-monitor
3.0.2