Angular2/ASP.NET - “未提供 ResourceLoader 实现。无法读取 URL”

2024-01-10

我正在尝试在 Visual Studio 上构建自己的 Angular 2/ASP.NET SPA。就可以找到所有的文件了here https://github.com/minusthebear/C_Sharp/tree/master/Test2/Test2.

我尝试做的很简单:按照说明设置应用程序后here http://blog.stevensanderson.com/2016/10/04/angular2-template-for-visual-studio/,我开始添加自己的文件,试图做一些基本的路由,并删除了一些多余的文件。我有ClientApp/app/app.module.ts引导ClientApp/app/components/app/app.component.ts,唯一的路线是ClientApp/app/components/app/test.component.ts

不幸的是,我收到了这个错误:

An unhandled exception occurred while processing the request.

Exception: Call to Node module failed with error: Error: No ResourceLoader implementation has been provided. Can't read the url "app.component.html"
at Object.get (C:\Users\Student\Source\Workspaces\mvs\Test2\Test2\node_modules\@angular\compiler\bundles\compiler.umd.js:17454:17)
at DirectiveNormalizer._fetch (C:\Users\Student\Source\Workspaces\mvs\Test2\Test2\node_modules\@angular\compiler\bundles\compiler.umd.js:13455:45)
at DirectiveNormalizer.normalizeTemplateAsync (C:\Users\Student\Source\Workspaces\mvs\Test2\Test2\node_modules\@angular\compiler\bundles\compiler.umd.js:13498:23)
at DirectiveNormalizer.normalizeDirective (C:\Users\Student\Source\Workspaces\mvs\Test2\Test2\node_modules\@angular\compiler\bundles\compiler.umd.js:13473:46)
at RuntimeCompiler._createCompiledTemplate (C:\Users\Student\Source\Workspaces\mvs\Test2\Test2\node_modules\@angular\compiler\bundles\compiler.umd.js:16869:210)
at C:\Users\Student\Source\Workspaces\mvs\Test2\Test2\node_modules\@angular\compiler\bundles\compiler.umd.js:16807:43
at Array.forEach (native)
at C:\Users\Student\Source\Workspaces\mvs\Test2\Test2\node_modules\@angular\compiler\bundles\compiler.umd.js:16805:50
at Array.forEach (native)
at RuntimeCompiler._compileComponents (C:\Users\Student\Source\Workspaces\mvs\Test2\Test2\node_modules\@angular\compiler\bundles\compiler.umd.js:16804:45)

对我来说一切看起来都不错,但我对 Angular 2 和 ASP.NET 都很陌生,所以我不知道这是编译器问题还是人为错误。这是一些代码,如果您需要更多信息,存储库的链接位于此问题的顶部。

ClientApp/app/app.module.ts

import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { UniversalModule } from 'angular2-universal';
import { AppComponent } from './components/app/app.component';
import { TestComponent } from './components/app/test.component';

@NgModule({
    bootstrap: [ AppComponent ],
    declarations: [
        AppComponent,
        TestComponent
    ],
    imports: [
        UniversalModule, // Must be first import. This automatically imports BrowserModule, HttpModule, and JsonpModule too.
        RouterModule.forRoot([
            { path: 'test', component: TestComponent },
            { path: '', redirectTo: 'test', pathMatch: 'full' },
            { path: '**', redirectTo: 'test' }
        ])
    ]
})
export class AppModule {
}

ClientApp/app/components/app/app.component.ts

import { Component, Input } from '@angular/core';

@Component({
    selector: 'app',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.css']
})
export class AppComponent {
}

ClientApp/app/components/app/test.component.ts

import {Component, Input, OnInit} from '@angular/core';

@Component({
    templateUrl: './test.component.html',
    styleUrls: ['./test.component.css']
})

export class TestComponent implements OnInit {
    testing: String;

    ngOnInit(): void {
        this.testing = "This Works";
    }
}

UniversalModule 目前要求模板和样式的外部资源使用 require()。

尝试改变templateUrl: './test.component.html' to template: require('./test.component.html').

And styleUrls: ['./test.component.css'] to styles: [require('./test.component.css')]

有关该问题的更多详细信息可以在这里找到:不使用 require() 就无法加载资源 https://github.com/aspnet/JavaScriptServices/issues/333

作为参考,以下是 Angular 在 Github 上的问题线程:跟踪运行时 styleUrl https://github.com/angular/universal/issues/432。他们建议使用 angular2-template-loader。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular2/ASP.NET - “未提供 ResourceLoader 实现。无法读取 URL” 的相关文章

随机推荐