2016-02-13 51 views
3

我需要为php + mysql项目创建一个Angular2 + TypeScript前端。 当我使用npm(jspm,tsd,webpack或gulp)或者链接到code.angularjs.org时,一切正常。 但是,当我试图只使用一些Angular2本地文件,然后systemjs将打破一切通过它的组件注册和扔给我一个这样的例外:Angular2使用打字稿环境分开文件

Uncaught SyntaxError: Unexpected token < 

也有在文档中的一些困惑如何用脚本和组件/视图实现index.html。 在深的文档中,我发现一个例子几乎为我工作:

<!DOCTYPE html> 
<html> 
<head> 
    <title>angular2 playground</title> 
    <link rel="stylesheet" href="style.css"> 
    <script src="tools/traceur-runtime.js"></script> 
    <script src="tools/system.js"></script> 
    <script src="tools/typescript.js"></script> 
    <script src="config.js"></script> 
    <script src="https://code.angularjs.org/2.0.0-beta.6/angular2.min.js"></script> 
    <script> 
    System.import('app') 
     .catch(console.error.bind(console)); 
    </script> 
</head> 
<body> 
    <my-app> 
    loading... 
    </my-app> 
</body> 
</html> 

但是当我更换到angular2.min.js当地版本我收到上述错误。

有谁知道如何解决它?

更新

感谢Chako answer我做了这样的设置,它是为我工作:

<script type="text/javascript" src="./libs/es6-shim.min.js"></script> 
<script type="text/javascript" src="./libs/system-polyfills.js"></script> 
<script type="text/javascript" src="./libs/system.src.js"></script> 
<script type="text/javascript" src="./libs/Rx.min.js"></script> 
<script type="text/javascript" src="./libs/angular/angular2-polyfills.js"></script> 
<script type="text/javascript" src="./libs/angular/angular2.dev.js"></script> 
<script type="text/javascript" src="./libs/angular/router.dev.js"></script> 
<script type="text/javascript" src="./libs/angular/http.dev.js"></script> 
<script> 
System.config({ 
    packages: { 
     app: { 
      format: 'register', 
      defaultExtension: 'js' 
     } 
    } 
}); 
System.import('app/main').then(null, console.error.bind(console)); 
</script> 

我也试着更新到beta 8,它是破碎找到文件,以便我将beta 6作为稳定版本。

而且某些时刻:

  • *.min.js版本不能正常工作。
  • Rx.min.jsbeta 8被抛向我,DI(依赖注入)的异常。
  • tsc不被微软支持更多的,它是从watch抛出编译错误,然后退出。所以我安装了ntsc,它工作更快,但在控制台中写入了更多的TypeScript错误。

回答

1

请您用下面的代码试试?用npm下载所有需要的js。

<script src="node_modules/es6-shim/es6-shim.js"></script> 
    <script src="node_modules/systemjs/dist/system-polyfills.js"></script> 
    <script src="node_modules/angular2/bundles/angular2-polyfills.js"></script> 
    <script src="node_modules/systemjs/dist/system.js"></script> 
    <script src="node_modules/typescript/lib/typescript.js"></script> 
    <script src="node_modules/rxjs/bundles/Rx.js"></script> 
    <script src="node_modules/angular2/bundles/angular2.dev.js"></script> 
    <script src="node_modules/angular2/bundles/http.dev.js"></script> 
    <script src="node_modules/angular2/bundles/router.dev.js"></script> 
    <script> 
     System.config({ 
     transpiler: 'typescript', 
     typescriptOptions: { emitDecoratorMetadata: true }, 
     packages: {'app': {defaultExtension: 'ts'}} 
     }); 
     System.import('app/boot') 
      .then(null, console.error.bind(console)); 
    </script> 

你可以找到在package.json下面的代码你需要的依赖。

{ 
    "name": "angular2-material-menu", 
    "version": "1.0.0", 
    "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", 
    "systemjs": "0.19.6", 
    "es6-promise": "^3.0.2", 
    "es6-shim": "^0.33.3", 
    "reflect-metadata": "0.1.2", 
    "rxjs": "5.0.0-beta.0", 
    "zone.js": "0.5.10" 
    }, 
    "devDependencies": { 
    "bootstrap": "^3.3.6", 
    "concurrently": "^1.0.0", 
    "lite-server": "^1.3.1", 
    "ng2-material": "^0.2.1", 
    "typescript": "^1.7.3" 
    } 
} 

这对我有用。

boot.ts

import {bootstrap} from 'angular2/platform/browser' 
import {HTTP_PROVIDERS, Http} from 'angular2/http'; 
import {ROUTER_PROVIDERS} from 'angular2/router'; 
import {HttpService} from 'app/component/http/http.service'; 

bootstrap(AppComponent, [HTTP_PROVIDERS, ROUTER_PROVIDERS, HttpService]).then(app => { 
     console.log('Bootstrap Successful'); 
    }, err => { 
     console.error(err); 
    }); 
+0

谢谢沙科您的快速答复。我也已经尝试过这个解决方案。你能给我提供你的'boot.ts'的代码吗? – Mike

+0

@ Mike-接着说:boot.ts'。 – Valay

+0

你用什么版本(咕嘟咕嘟的WebPack等)? – Mike