“模板解析错误:'app' 不是已知元素”当使用 Webpack2 构建和部署“OK”angular2 应用程序时

Posted

技术标签:

【中文标题】“模板解析错误:\'app\' 不是已知元素”当使用 Webpack2 构建和部署“OK”angular2 应用程序时【英文标题】:“Template parse errors: 'app' is not a known element” when an 'OK' angular2 app is built with Webpack2 and deployed“模板解析错误:'app' 不是已知元素”当使用 Webpack2 构建和部署“OK”angular2 应用程序时 【发布时间】:2017-05-30 22:46:57 【问题描述】:

我的带有 angularfire2 的 angular (v2.4) 应用程序在开发环境(快速服务器)中运行顺畅。当我使用“npm run build”构建它时,Webpack2 构建应用程序并将其放入名为“target”的文件夹中。当我使用“npm run server”从目标文件夹运行构建的应用程序时,服务器启动并且浏览器没有显示任何预期的应用程序标题。在浏览器的控制台中,我收到此错误:

"未处理的 Promise 拒绝:模板解析错误:'app' 不是 已知元素:如果 'app' 是 Angular 组件,则验证它 是这个模块的一部分。如果 'app' 是 Web 组件,则添加 "CUSTOM_ELEMENTS_SCHEMA" 到这个组件的 '@NgModule.schemas' 禁止显示此消息。”

我在这里为您提供应用程序的应用程序组件 index.ts、main.ts。如果你想看 webpack.config.js,我也可以提供。

这是我的应用组件:

import  Component  from '@angular/core';
import  AuthService  from '../../auth';

@Component(
  selector: 'app',
  template: ` 
    <app-header
      [authenticated]="auth.authenticated"
      (signOut)="signOut()"></app-header>

      <router-outlet></router-outlet>

     <app-footer
      [authenticated]="auth.authenticated"></app-footer>      
  `
)

export class AppComponent 
  constructor(private auth: AuthService) 

  signOut(): void 
    this.auth.signOut();
  

这是我的应用模块的 index.ts:

import NgModule from '@angular/core';
import  BrowserModule  from '@angular/platform-browser';
import  RouterModule from '@angular/router';
import  HttpModule  from '@angular/http';

import  AuthModule  from '../auth';
import  FirebaseModule  from '../firebase';
import  HomeModule from  '../home';


import  AppComponent  from './components/app';
import  AppHeaderComponent  from './components/app-header';
import AppFooterComponent from './components/app-footer';

@NgModule(

  declarations: [
    AppComponent,
    AppHeaderComponent,
    AppFooterComponent
  ],
  bootstrap: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    RouterModule.forRoot([], useHash: false),
    HttpModule,
    AuthModule,
    FirebaseModule,
    HomeModule,
  ]
)

export class AppModule 

这是我的 main.ts:

import  enableProdMode  from '@angular/core';
import  platformBrowserDynamic  from '@angular/platform-browser-dynamic';

// AppModule
import  AppModule  from './app';

// common styles
import './common/styles/_styles.scss';


if (process.env.NODE_ENV === 'production') 
  enableProdMode();


platformBrowserDynamic().bootstrapModule(AppModule);

【问题讨论】:

有时我会遇到同样的问题,因为我的模板中存在一些运行时错误。请用更简单的模板替换您的模板(例如:&lt;h1&gt;testing app.component template&lt;/h1&gt;):如果原因在模板中,错误将消失。如果没有,我们将不得不考虑其他可能的原因。 github.com/angular/angular/issues/15860 请粘贴您的 index.html 文件 在 index.html 的正文中,您应该验证有 &lt;app&gt;&lt;/app&gt;。我通常在 AppComponent.ts 选择器中调用我的 app-root - 但你所拥有的就足够了。 似乎与此重复.. ***.com/a/40407697/495157 【参考方案1】:

我认为您需要更新您的项目。我不时遇到同样的问题。有时,我只是创建一个新项目并复制代码。这在 99% 的时间里都有效。

【讨论】:

【参考方案2】:
import NgModule, CUSTOM_ELEMENTS_SCHEMA  from '@angular/core';
import  BrowserModule  from '@angular/platform-browser';
import  RouterModule from '@angular/router';
import  HttpModule  from '@angular/http';

import  AuthModule  from '../auth';
import  FirebaseModule  from '../firebase';
import  HomeModule from  '../home';


import  AppComponent  from './components/app';
import  AppHeaderComponent  from './components/app-header';
import AppFooterComponent from './components/app-footer';

@NgModule(

  declarations: [
    AppComponent,
    AppHeaderComponent,
    AppFooterComponent
  ],
  schemas: [
    CUSTOM_ELEMENTS_SCHEMA
  ],
  bootstrap: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    RouterModule.forRoot([], useHash: false),
    HttpModule,
    AuthModule,
    FirebaseModule,
    HomeModule,
  ]
)

export class AppModule 

在文件中添加如下修改

【讨论】:

以上是关于“模板解析错误:'app' 不是已知元素”当使用 Webpack2 构建和部署“OK”angular2 应用程序时的主要内容,如果未能解决你的问题,请参考以下文章

当我们只能使用 NSObject 时,为啥还要使用 id?

为啥当我解构属性时接收道具的组件不起作用,但是当我使用 props.key 时它起作用了?

当我们使用 JavaScript 隐藏/显示时清除下拉列表和/或文本框内容当它们被交替选择时

当 Model 超出使用范围时,实际会发生啥?

RHandsontable 不正确的输入转换,当使用格式时

当我们使用它时,线程本地是啥? [复制]