Angular 2 RC 4 "(SystemJS)不能解析[object Location]的所有参数:&q

Angular 2 RC 4 "(SystemJS) Can't resolve all parameters for [object Location]: " in IE 11

本文关键字:Location object 参数 quot RC 不能 SystemJS Angular      更新时间:2023-09-26

我的Web App在Chrome, Firefox和Edge中运行良好,但在IE 11中当然不行。可能旧版本的IE也不行。这是一个使用Angular Cli生成的最小应用。

完整错误:

EXCEPTION: Can't resolve all parameters for [object Location]: (?).
   EXCEPTION: Can't resolve all parameters for [object Location]: (?).
Unhandled Promise rejection: (SystemJS) Can't resolve all parameters for [object Location]: (?).
    Evaluating http://localhost:4200/main.js
    Error loading http://localhost:4200/main.js ; Zone: <root> ; Task: Promise.then ; Value: Error: (SystemJS) Can't resolve all parameters for [object Location]: (?).
    Evaluating http://localhost:4200/main.js
    Error loading http://localhost:4200/main.js
   "Unhandled Promise rejection:"
   "(SystemJS) Can't resolve all parameters for [object Location]: (?).
    Evaluating http://localhost:4200/main.js
    Error loading http://localhost:4200/main.js"
   "; Zone:"
   "<root>"
   "; Task:"
   "Promise.then"
   "; Value:"
   {
      [functions]: ,
      __proto__: { },
      description: "(SystemJS) Can't resolve all parameters for [object Location]: (?).
    Evaluating http://localhost:4200/main.js
    Error loading http://localhost:4200/main.js",
      message: "(SystemJS) Can't resolve all parameters for [object Location]: (?).
    Evaluating http://localhost:4200/main.js
    Error loading http://localhost:4200/main.js",
      name: "Error",
      originalErr: { },
      stack: null,
      Symbol()_g.sn5fkg9wx58: undefined,
      Symbol(rxSubscriber)_o.sn5fkg9wx58: undefined
   }
Error: Uncaught (in promise): Error: (SystemJS) Can't resolve all parameters for [object Location]: (?).
    Evaluating http://localhost:4200/main.js
    Error loading http://localhost:4200/main.js
   {
      [functions]: ,
      __proto__: { },
      description: "Uncaught (in promise): Error: (SystemJS) Can't resolve all parameters for [object Location]: (?).
    Evaluating http://localhost:4200/main.js
    Error loading http://localhost:4200/main.js",
      message: "Uncaught (in promise): Error: (SystemJS) Can't resolve all parameters for [object Location]: (?).
    Evaluating http://localhost:4200/main.js
    Error loading http://localhost:4200/main.js",
      name: "Error",
      promise: {
         [functions]: ,
         __proto__: { },
         __zone_symbol__state: 0,
         __zone_symbol__value: { },
         Symbol()_g.sn5fkg9wx58: undefined,
         Symbol(rxSubscriber)_o.sn5fkg9wx58: undefined
      },
      rejection: {
         [functions]: ,
         __proto__: { },
         description: "(SystemJS) Can't resolve all parameters for [object Location]: (?).
    Evaluating http://localhost:4200/main.js
    Error loading http://localhost:4200/main.js",
         message: "(SystemJS) Can't resolve all parameters for [object Location]: (?).
    Evaluating http://localhost:4200/main.js
    Error loading http://localhost:4200/main.js",
         name: "Error",
         originalErr: { },
         stack: null,
         Symbol()_g.sn5fkg9wx58: undefined,
         Symbol(rxSubscriber)_o.sn5fkg9wx58: undefined
      },
      stack: "Error: Uncaught (in promise): Error: (SystemJS) Can't resolve all parameters for [object Location]: (?).
    Evaluating http://localhost:4200/main.js
    Error loading http://localhost:4200/main.js
   at l (http://localhost:4200/vendor/zone.js/dist/zone.min.js:1:2987)
   at l (http://localhost:4200/vendor/zone.js/dist/zone.min.js:1:2816)
   at Anonymous function (http://localhost:4200/vendor/zone.js/dist/zone.min.js:1:3327)
   at e.prototype.invokeTask (http://localhost:4200/vendor/zone.js/dist/zone.min.js:1:7737)
   at e.prototype.runTask (http://localhost:4200/vendor/zone.js/dist/zone.min.js:1:5178)
   at a (http://localhost:4200/vendor/zone.js/dist/zone.min.js:1:2421)
   at invoke (http://localhost:4200/vendor/zone.js/dist/zone.min.js:1:8989)",
      Symbol()_g.sn5fkg9wx58: undefined,
      Symbol(rxSubscriber)_o.sn5fkg9wx58: undefined,
      task: { },
      zone: { }
   }

package.json

  "dependencies": {
    "@angular/common": "2.0.0-rc.4",
    "@angular/compiler": "2.0.0-rc.4",
    "@angular/core": "2.0.0-rc.4",
    "@angular/platform-browser": "2.0.0-rc.4",
    "@angular/platform-browser-dynamic": "2.0.0-rc.4",
    "@angular/router": "3.0.0-beta.1",
    "core-js": "^2.4.0",
    "es5-shim": "^4.5.9",
    "es6-shim": "^0.35.1",
    "reflect-metadata": "0.1.3",
    "rxjs": "5.0.0-beta.6",
    "systemjs": "^0.19.31",
    "zone.js": "^0.6.12"
  },

index . html

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>Focus Anbud</title>
  <base href='/'> {{content-for 'head'}}
  <link rel="icon" type="image/x-icon" href="favicon.ico">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!-- Loading Spinner -->
  <link rel="stylesheet" href="assets/css/whirly.css">
  <link rel="stylesheet" href="assets/css/bootstrap.min.css">
  <link rel="stylesheet" href="assets/css/font-awesome.min.css">
  <link rel="stylesheet" href="assets/css/ionicons.min.css">
  <!--
  <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
  <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
  <link rel="stylesheet" href="//code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
  -->
  <!-- Theme -->
  <link rel="stylesheet" href="assets/css/AdminLTE.min.css">
  <link rel="stylesheet" href="assets/css/skins/skin-blue.min.css">
</head>
<body class="hold-transition skin-blue sidebar-mini">
  <!--<div class="wrapper">-->
  <app>
    <div class="whirly-loader" style="margin-left: 50%; margin-top:20%">Loading...</div>
  </app>
  <!--</div>-->
  <!-- ./wrapper -->
  <!-- jQuery 2.1.4 -->
  <script src="plugins/jQuery/jQuery-2.1.4.min.js"></script>
  <!-- Bootstrap 3.3.6 -->
  <script src="assets/js/bootstrap.min.js"></script>
  <!--<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>-->
  <!-- AdminLTE App -->
  <script src="assets/js/app.js"></script>
  <!-- polyfills for older browsers -->
  <script src="vendor/es5-shim/es5-shim.min.js"></script>
  <script src="vendor/es6-shim/es6-shim.min.js"></script>
  <script src="vendor/systemjs/dist/system-polyfills.js"></script>
  <script src="https://npmcdn.com/angular2/es6/dev/src/testing/shims_for_IE.js"></script>
  <script src="vendor/core-js/client/shim.min.js"></script>
  <!-- default -->
  <script src="vendor/zone.js/dist/zone.min.js"></script>
  <script src="vendor/reflect-metadata/Reflect.js"></script>
  <script src="vendor/systemjs/dist/system.src.js"></script>
  <script>
    System.import('system-config.js').then(function() {
      System.import('main');
    }).catch(console.error.bind(console));
  </script>
</body>
</html>

正如你所看到的,我已经尝试了es5-shim, es6-shim, IE垫片,core-js垫片等的所有组合。似乎没有什么区别…

tsconfig:

      "compileOnSave": false,
      "compilerOptions": {
        "declaration": false,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "mapRoot": "",
        "module": "commonjs",
        "moduleResolution": "node",
        "noEmitOnError": true,
        "noImplicitAny": false,
        "outDir": "../dist/",
        "rootDir": ".",
        "sourceMap": true,
        "target": "es5",
        "inlineSources": true
      },
system-config.ts
/***********************************************************************************************
 * User Configuration.
 **********************************************************************************************/
/** Map relative paths to URLs. */
const map: any = {
};
/** User packages configuration. */
const packages: any = {
};
////////////////////////////////////////////////////////////////////////////////////////////////
/***********************************************************************************************
 * Everything underneath this line is managed by the CLI.
 **********************************************************************************************/
const barrels: string[] = [
  // Angular specific barrels.
  '@angular/core',
  '@angular/common',
  '@angular/compiler',
  '@angular/http',
  '@angular/router',
  '@angular/platform-browser',
  '@angular/platform-browser-dynamic',
  // Thirdparty barrels.
  'rxjs',
  // translate
  'ng2-translate',
  // google-analytics
  'angulartics2',
  // App specific barrels.
  'app',
  'app/shared',
  'app/home',
  'app/_widgets/app-header/',
  'app/_widgets/menu-aside',
  'app/page2',
  'app/page3',
  'app/_widgets/alert',
  'app/_widgets/box',
  'app/_widgets/messages-box',
  'app/_widgets/notification-box',
  'app/_widgets/tasks-box',
  'app/_widgets/user-box',
  'app/_widgets/language-box',
  'app/profile',
  /** @cli-barrel */
];
const cliSystemConfigPackages: any = {};
barrels.forEach((barrelName: string) => {
  cliSystemConfigPackages[barrelName] = { main: 'index', "defaultExtension": "js" };
});
/** Type declaration for ambient System. */
declare var System: any;
// Apply the CLI SystemJS configuration.
System.config({
  map: {
    '@angular': 'vendor/@angular',
    'rxjs': 'vendor/rxjs',
    'main': 'main.js',
    'ng2-translate': 'vendor/ng2-translate',
    'angulartics2': 'vendor/angulartics2'
  },
  packages: cliSystemConfigPackages
});
// Apply the user's configuration.
System.config({map, packages });

这与LocationStrategy (HashLocationStrategy等)有关,位置策略存储在@angular/common包中。

检查你的引导代码,清除IE缓存,尝试重新安装包

发现了问题,它不在我在这里展示的任何文件中,但是一个组件有:providers: [Location],并且它没有在任何地方使用或从任何地方导入。

变化

<!-- polyfills for older browsers -->
<script src="vendor/es5-shim/es5-shim.min.js"></script>
<script src="vendor/es6-shim/es6-shim.min.js"></script>
<script src="vendor/systemjs/dist/system-polyfills.js"></script>
<script src="https://npmcdn.com/angular2/es6/dev/src/testing/shims_for_IE.js"></script>
<script src="vendor/core-js/client/shim.min.js"></script>
<!-- default -->
<script src="vendor/zone.js/dist/zone.min.js"></script>
<script src="vendor/reflect-metadata/Reflect.js"></script>
<script src="vendor/systemjs/dist/system.src.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/reflect-metadata/Reflect.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>