Angular2 RC6未捕获的ReferenceError:未定义系统

时间:2016-09-02 12:32:53

标签: angular systemjs

我正在将我的rc5项目升级到rc6。我已经更新了其余代码,现在它已编译,但是当我在浏览器中导航到项目时,我收到错误。我认为问题出在我的systemjs配置文件中,即在System.config

我的index.html是:

<!DOCTYPE html>
<html lang="en">

<head>
  <base href="/">
  <title>Angular2 rc6</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <link rel="stylesheet" href="css/vendor.css" />

  <script src="node_modules/typescript/lib/typescript.js"></script>
  <script src="node_modules/core-js/client/shim.min.js"></script>
  <script src="node_modules/zone.js/dist/zone.js"></script>
  <script src="node_modules/systemjs/dist/system.src.js"></script>

  <script src="systemjs.config.js"></script>
  <script>
    System.import('app').catch(function(err){ console.error(err); });
  </script>
</head>

<body>
  <app>Loading...</app>
</body>

</html>

systemjs.config.js

System.config({
    transpiler: 'typescript',
    typescriptOptions: {emitDecoratorMetadata: true},
    map: {
      '@angular': 'node_modules/@angular',
      'rxjs'    : 'node_modules/rxjs'
    },
    paths: {
      'node_modules/@angular/*': 'node_modules/@angular/*/bundles'
    },
    meta: {
      '@angular/*': {'format': 'cjs'}
    },
    packages: {
      'app'                              : {main: 'main', defaultExtension: 'js'},
      'rxjs'                             : {main: 'Rx'},
      '@angular/core'                    : {main: 'core.umd.min.js'},
      '@angular/common'                  : {main: 'common.umd.min.js'},
      '@angular/compiler'                : {main: 'compiler.umd.min.js'},
      '@angular/platform-browser'        : {main: 'platform-browser.umd.min.js'},
      '@angular/platform-browser-dynamic': {main: 'platform-browser-dynamic.umd.min.js'}
    }
});

项目结构是

project
|-systemjs.config.js
|-src
    |-index.html
    |-app
       |-main.ts
          |-...

错误

typescript.js:1 Uncaught SyntaxError: Unexpected token <
shim.min.js:1 Uncaught SyntaxError: Unexpected token <
zone.js:1 Uncaught SyntaxError: Unexpected token <
system.src.js:1 Uncaught SyntaxError: Unexpected token <
systemjs.config.js:1 Uncaught SyntaxError: Unexpected token <
(index):20 Uncaught ReferenceError: System is not defined

1 个答案:

答案 0 :(得分:0)

我相信它是因为你需要更新你的Systemjs.config.js文件。 Rc.6对配置文件进行了一些重大更改。我通过复制新的systemjs.config.js文件解决了我自己项目中的这个错误,确保为项目添加了特殊的映射或路径,并将其添加到

map:{}

paths:{}

配置部分。 同样,这也是一个很好的做法,我会将 index.html 移到项目的根目录(接下来是systemjs.config.js),并且因为你的 app 文件夹嵌套在 src 文件夹中,您可能需要将其添加到systemjs.config中的地图上,例如

map{
    app: 'src/app'
}

你也可以在这里找到新的systemjs.config.js angular.io