【问题标题】:Error: XHR error (404 Not Found) loading http://localhost:3622/app.js(…) + angular 2错误:XHR 错误(404 Not Found)加载 http://localhost:3622/app.js(...) + angular 2
【发布时间】:2016-05-25 11:24:59
【问题描述】:

我正在尝试在 Visual Studio 2015 应用程序中使用打字稿构建一个 Angular 2 应用程序。我正在使用 Angular 候选版本 1。

运行应用程序时,我在浏览器的控制台中收到以下错误消息。

index.html:24 Error: Error: XHR error (404 Not Found) loading http://localhost:3622/app.js(...)

我不明白它为什么要查找 app.js 文件。我已将 index.html 设置为起始页。

如下面的代码所示,我正在尝试在数据表中显示数据。我如何设置 systemjs.js 文件或 index.html 文件中的 system.import 语句是否有任何问题

请找到我的文件夹结构

Index.html

<!DOCTYPE html>
<html>

<head>
    <title>Angular 2 Application</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>


    <!-- 1. Load libraries -->
    <!-- Polyfill(s) for older browsers -->
    <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>
    <script src="node_modules/primeui/primeui-ng-all.min.js"></script>

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

</head>

<body>
    <my-app>Loading..</my-app>
</body>

</html>

Systemjs.config.js

(function (global) {

    // map tells the System loader where to look for things
    var map = {
        'app': 'app', // 'dist',
        'rxjs': 'node_modules/rxjs',
        'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api',
        '@angular': 'node_modules/@angular',
        'primeng': 'node_modules/primeng'
    };

    // packages tells the System loader how to load when no filename and/or no extension
    var packages = {
        '.': { main: 'main.js', defaultExtension: 'js' },
        'rxjs': { defaultExtension: 'js' },
        'angular2-in-memory-web-api': { defaultExtension: 'js' },
    };

    var packageNames = [
      '@angular/common',
      '@angular/compiler',
      '@angular/core',
      '@angular/http',
      '@angular/platform-browser',
      '@angular/platform-browser-dynamic',
      '@angular/router',
      '@angular/testing',
      '@angular/upgrade',
      '@angular/router-deprecated'
    ];

    // add package entries for angular packages in the form '@angular/common': { main: 'index.js', defaultExtension: 'js' }
    packageNames.forEach(function (pkgName) {
        packages[pkgName] = { main: 'index.js', defaultExtension: 'js' };
    });

    var config = {
        map: map,
        packages: packages
    }

    // filterSystemConfig - index.html's chance to modify config before we register it.
    if (global.filterSystemConfig) { global.filterSystemConfig(config); }

    System.config(config);

})(this);

ma​​in.ts

import { bootstrap } from '@angular/platform-browser-dynamic';

// Our main component
import { AppComponent } from './app/app.component';


bootstrap(AppComponent, []).catch(err => console.error(err));

app.component.ts

import { Component } from '@angular/core';
import { RiskListComponent } from './components/risks/risk-list.component';
import { DataTable, Column } from 'primeng/primeng';


@Component({
    selector: 'my-app',
    providers: [],
    template: `
    <div>
        <h1>{{pageTitle}}</h1>
          <rm-risks> </rm-risks> 
     </div>
     ` ,
    directives: [RiskListComponent, DataTable, Column]

})

export class AppComponent {
    pageTitle: string = 'Test UK Trader'; 
}

risk-list.component.ts

import { Component } from '@angular/core'
import { DataTable, Column } from 'primeng/primeng';

@Component({
    selector: 'rm-risks',
    directives: [DataTable, Column],
    templateUrl: '/app/risks/risk-list.component.html'



    })

export class RiskListComponent {
    pageTitle: string = 'Risk List';
    risks: any[] = [
        {
            "riskId": 1,
            "reference": "HISC9308336",
            "insuredName": "SA 84161",
            "inceptionDate": "March 19, 2016",
            "riskType": "Quote",
            "status": "Indication",
            "grossPremium": "100",
            "allocatedTo": "Broker User",
            "allocatedCompany": "Broker"
        },
        {
            "riskId": 2,
            "reference": "HISC9308340",
            "insuredName": "Upper Loi",
            "inceptionDate": "April 25, 2016",
            "riskType": "Quote",
            "status": "Indication",
            "grossPremium": "312.22",
            "allocatedTo": "Andy Marples",
            "allocatedCompany": "Broker"
        }
    ];
}

risk-list.component.html

<h3 class="first">{{pageTitle}}</h3>

<p-dataTable [value]="risks" [rows]="10" [paginator]="true" [pageLinks]="3" [rowsPerPageOptions]="[5,10,20]">
    <p-column field="reference" header="Reference"></p-column>
    <p-column field="insuredName" header="Insured Name"></p-column>
    <p-column field="inceptionDate" header="Inception Date"></p-column>
    <p-column field="riskType" header="Risk Type"></p-column>
    <p-column field="status" header="Status"></p-column>
    <p-column field="grossPremium" header="Gross Premium"></p-column>
    <p-column field="allocatedTo" header="Allocated To"></p-column>
    <p-column field="allocatedCompany" header="Allocated Company"></p-column>
</p-dataTable>

tsconfig.js

{
  "compileOnSave": false,
  "compilerOptions": {
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "module": "commonjs",
    "moduleResolution": "node",
    "noEmitOnError": true,
    "noImplicitAny": false,
    "outDir": "../dist/",
    "rootDir": ".",
    "sourceMap": true,
    "target": "es6",
    "inlineSources": true
  },
  "exclude": [
    "node_modules",
    "typings",
    "typings/main",
    "typings/main.d.ts"

  ]
}

【问题讨论】:

  • 您也可以发布您的tsconfig.json 吗?但是如果没有看到它,我会说你应该在你的index.html 中做System.import('main').catch(function (err) { console.error(err); });。 (而不是导入“应用程序”)
  • 添加了 tsconfig.js
  • 如果我将 main 放在 system.import 中,我会收到一条消息说 Error: Error: XHR error (404 Not Found) loading localhost:3622/main.js(...)
  • 您的 outDir 设置为 ../dist/,这意味着它超出了您的 liteserver 的范围/根目录。

标签: angularjs angular


【解决方案1】:

我会将main.ts 文件移动到app 文件夹下并以这种方式导入:

<script>
  System.import('app/main').catch(function (err) { console.error(err); });
</script>

您还需要对 SystemJS 进行此配置:

var packages = {
    'app': { main: 'main.js', defaultExtension: 'js' },
    'rxjs': { defaultExtension: 'js' },
    'angular2-in-memory-web-api': { defaultExtension: 'js' },
};

【讨论】:

  • 他也在他的tsconfig.json中使用outDir
  • 我收到以下错误localhost:3622/app/main.js 加载资源失败:服务器响应状态为 404(未找到)index.html:24 错误:错误:XHR 错误(404 未找到)正在加载localhost:3622/app/main.js(…)(匿名函数)@index.html:24
  • app文件夹下只能看到main.ts和main.js.map文件
  • 以上提出的解决方案仍然不能解决我的问题
  • 我将所有js文件从outdir复制到应用程序目录,现在出现以下错误Error: Error: XHR error (404 Not Found) loading localhost:3622/node_modules/primeng/primeng(…)
猜你喜欢
  • 2017-01-20
  • 2017-03-16
  • 1970-01-01
  • 2017-07-09
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多