我在使用Angular2和SystemJS运行以下版本的JSPM时遇到以下问题(版本:Angular@2.0.0-alpha.27,JSPM @ 0.16.0-beta.2和SystemJS@0.18.0)打字稿被编译(没有错误)我在浏览器中收到以下错误:
/jspm_packages/npm/angular2@2.0.0-alpha.27/src/util/decorators.js:70 Uncaught reflect-metadata shim is required when using class decorators
现在当我手动包含文件Reflect.js:\ jspm_packages \ npm \ reflect-metadata@0.1.0 \ Reflect.js时,问题就消失了但是下一个问题出现了,说明列表在另一个角度文件中是未定义的。
从system.js和typescript / jspm.io中查看配置文件(src代码)下面的bitbucket src
我想知道的是,如果它现在甚至可以将jspm与system.js一起使用来检索角度正常运行所需的所有角度包。 看作system.js的配置确实明确指出angular取决于它:
"npm:angular2@2.0.0-alpha.27": {
"fs": "github:jspm/nodelibs-fs@0.1.2",
"path": "github:jspm/nodelibs-path@0.1.0",
"process": "github:jspm/nodelibs-process@0.1.1",
"reflect-metadata": "npm:reflect-metadata@0.1.0",
"rx": "npm:rx@2.5.1",
"url": "github:jspm/nodelibs-url@0.1.0",
"zone.js": "npm:zone.js@0.5.1"
},
但是没有检索到它们(查看网络标签)
答案 0 :(得分:66)
是的,你正在寻找的东西是可能的并且运作良好。看起来好像你有依赖关系。我认为您只缺少以下内容,这些内容需要位于顶级打字稿或JavaScript文件的开头。具体来说,这些需要在第一行之前加载Angular。
import 'zone.js';
import 'reflect-metadata';
(另一个答案指向详细但非现场的解释。)
答案 1 :(得分:13)
Robwormald写了一个非常详细的解释,涵盖了人们此时可能遇到的问题,并尝试使用角度alpha 27来处理jspm和typescript https://gist.github.com/robwormald/429e01c6d802767441ec
答案 2 :(得分:4)
如果在Angular 4.4+环境中出现此问题,则重新启动ng serve
会有所帮助。