【问题标题】:No NgModule metadata found for 'AppServerModule'找不到“AppServerModule”的 NgModule 元数据
【发布时间】:2020-02-09 09:32:43
【问题描述】:

我正在尝试运行和构建我的服务器端渲染 Angular 项目。一旦我在我的机器上本地运行项目并在网络浏览器中打开它,我会收到以下错误:

Error: No NgModule metadata found for 'AppServerModule'.
    at NgModuleResolver.resolve (/Users/user/Projects/myproject/node_modules/@angular/compiler/bundles/compiler.umd.js:22963:27)
    at CompileMetadataResolver.getNgModuleMetadata (/Users/user/Projects/myproject/node_modules/@angular/compiler/bundles/compiler.umd.js:22066:47)
    at JitCompiler._loadModules (/Users/user/Projects/myproject/node_modules/@angular/compiler/bundles/compiler.umd.js:28255:55)
    at JitCompiler._compileModuleAndComponents (/Users/user/Projects/myproject/node_modules/@angular/compiler/bundles/compiler.umd.js:28236:40)
    at JitCompiler.compileModuleAsync (/Users/user/Projects/myproject/node_modules/@angular/compiler/bundles/compiler.umd.js:28196:41)
    at CompilerImpl.compileModuleAsync (/Users/user/Projects/myproject/node_modules/@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js:339:35)
    at CommonEngine.<anonymous> (/Users/user/Projects/myproject/node_modules/@nguniversal/express-engine/bundles/express-engine.umd.js:95:69)
    at step (/Users/user/Projects/myproject/node_modules/tslib/tslib.js:136:27)
    at Object.next (/Users/user/Projects/myproject/node_modules/tslib/tslib.js:117:57)
    at /Users/user/Projects/myproject/node_modules/tslib/tslib.js:110:75

我已经进行了一些检查和研究,但我无法找到问题所在。我相信这是相对简单的事情,但会感谢任何帮助。我将提供有关其他一些文件的一些详细信息。提前谢谢!

这里是 src/main.server.ts 文件

import { enableProdMode } from '@angular/core';

import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

export { AppServerModule } from './app/app.server.module';
export { renderModule, renderModuleFactory } from '@angular/platform-server';

这里是 src/app/app.server.module 文件

import { NgModule } from '@angular/core';
import { ServerModule } from '@angular/platform-server';

import { AppModule } from './app.module';
import { AppComponent } from './app.component';

@NgModule({
  imports: [
    AppModule,
    ServerModule,
  ],
  bootstrap: [AppComponent],
})
export class AppServerModule {}

【问题讨论】:

    标签: angular typescript server-side-rendering angular9


    【解决方案1】:

    'import' 而不是 'export' 会修复它

    【讨论】:

    • 不敢相信我没有看到。今天看代码太多,不知道怎么走
    • 如果还有什么我会帮你np :D
    • 谢谢。所以我确实尝试过,但是从我的研究导出 { AppServerModule } from './app/app.server.module';是有效的,需要在 main.server.ts 奇怪的问题,我正在使用 Angular 9,但也许某处出了点问题
    • 你能在 main.ts 中添加这个并检查吗? platformBrowserDynamic().bootstrapModule(AppModule) .catch(err => console.error(err));
    • 让它工作了,必须改变构建技术以通过本地的 firebase 函数运行它,而不是在 firebase 函数之外提供它
    【解决方案2】:

    ng10 通用项目也有同样的问题。就我而言,我已将 bundleDependencies 设置为 false,并将其恢复为 true 清除了上述错误。 angular.json sn-p 下面。

    "server": {
      "builder": "@angular-devkit/build-angular:server",
      "options": {
        "outputPath": "dist/server",
        "main": "server.ts",
        "tsConfig": "tsconfig.server.json",
        "bundleDependencies": true
      },
    

    【讨论】:

    • 在 version12 中遇到了同样的问题,但在我的情况下,bundleDependencies 默认为 true,问题仍然存在。
    猜你喜欢
    • 2018-05-09
    • 2017-03-08
    • 2019-01-18
    • 2017-02-02
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    相关资源
    最近更新 更多