从
5 minute quick start开始我一直在玩angular2测试版,并遇到了一个问题,我陷入困境。
这是一个dumbed down版本,显示了我有的问题。首先在这里一个hello世界的应用程序完美工作。
package.json
{ "name": "...","version": "0.0.1","description": "...","author": { "name": "...","email": "..." },"scripts": { "tsc": "tsc","tsc:w": "tsc -w","lite": "lite-server","start": "concurrent \"npm run tsc:w\" \"npm run lite\" " },"license": "ISC","dependencies": { "angular2": "2.0.0-beta.0","bootstrap": "^3.3.6","es6-promise": "^3.0.2","es6-shim": "^0.33.3","reflect-Metadata": "^0.1.2","rxjs": "5.0.0-beta.0","systemjs": "0.19.6","zone.js": "^0.5.10" },"devDependencies": { "concurrently": "^1.0.0","lite-server": "^1.3.1","typescript": "^1.7.3" } }
index.html
<head> <title>Title</title> <link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.min.css"> <link href="styles.css" rel="stylesheet" /> <!-- 1. Load libraries --> <script src="node_modules/es6-shim/es6-shim.js"></script> <script src="node_modules/angular2/bundles/angular2-polyfills.js"> </script> <script src="node_modules/systemjs/dist/system.src.js"></script> <script src="node_modules/rxjs/bundles/Rx.js"></script> <script src="node_modules/angular2/bundles/angular2.dev.js"></script> <!-- 2. Configure SystemJS --> <script> System.config({ packages: { app: { format: 'register',defaultExtension: 'js' } } }); System.import('app/boot') .then(null,console.error.bind(console)); </script> </head> <!-- 3. Display the application --> <body> <my-app></my-app> </body>
app / boot.ts
import {bootstrap} from 'angular2/platform/browser' import {AppComponent} from './app.component' import {AccountService} from './accounts/account.service' bootstrap(AppComponent);
app / app.component.ts
import {Component,View} from 'angular2/core'; import {RegisterFormComponent} from './accounts/register-form.component' @Component({ selector: 'my-app',}) @View({ template: 'hello world',}) export class AppComponent { }
我真的想调用我的Web Api服务,所以我试图关注the docs for Http,我更新boot.ts如下:
新应用程序/ boot.ts
import {bootstrap} from 'angular2/platform/browser' import {AppComponent} from './app.component' import {AccountService} from './accounts/account.service' import {HTTP_PROVIDERS} from 'angular2/http'; bootstrap(AppComponent,[HTTP_PROVIDERS]);
这里是东西窒息的地方。
Chrome给了我:
uncaught SyntaxError: Unexpected token < - http:1 uncaught SyntaxError: Unexpected token < - angular2-polyfills.js:138 evaluating http://localhost:3000/angular2/http error loading http://localhost:3000/app/boot.js
如果我尝试将HTTP_PROVIDERS设置为我的组件上的viewProvider,它也会失败。
有没有人有任何运气得到Http注入正确在angular2 beta?
> Visual Studio 2015
> Node.JS& Node.JS工具的视觉工作室
>使用“NPM start”编译和运行
当您尝试导入在使用SystemJS时未包括在HTML中的某些内容时,会发生此错误。模块捆绑包像Webpack处理所有你。
对于你的情况,你必须添加的Http包是一个单独的包,例如
<script src="https://code.angularjs.org/2.0.0-beta.0/http.dev.js"></script>
尝试使用路由器时,您会看到此相同的错误,并且忘记添加路由器包。
检查这两个配置之间的区别从@ pkozlowski-opensource的回购
> Using SystemJS:对于这种情况,他将不得不添加http包或路由器包,如果他想使用它们。
> Using Webpack:在这种情况下,Webpack会捆绑bundle.js文件中的所有内容。
很高兴它帮助。