将 nguniversal/express-engine 添加到 Angular 项目:"Cannot find BrowserModule import in /src/app/app.module.ts"
Adding nguniversal/express-engine to Angular proj: "Cannot find BrowserModule import in /src/app/app.module.ts"
第一题
目标
我正在尝试使用 ng add @nguniversal/express-engine --clientProject [name]
将 SSR 添加到我的 Angular 项目中(这样我就可以动态预呈现元标记)
预期结果
我希望该命令能够成功执行所有脚手架和对我现有文件的必要更新,如 YouTube tutorial 中所示。
实际结果
相反,控制台是这样说的:
Installing packages for tooling via npm.
Installed packages for tooling via npm.
Cannot find BrowserModule import in /src/app/app.module.ts
但是 BrowserModule 是 在 app.module.ts 中导入的。
我试过的
- 正在重新安装包
我尝试使用 npm uninstall @nguniversal/express-engine
卸载软件包并重新 运行 上面的 ng add
,同样的问题。
关于 ng 添加 @nguniversal/express-server 的其他已发布问题似乎不适用于此处,因为这些人实际上已经创建了一些脚手架并生成了新文件 - 没有为我创建文件根本没有,但是模块确实被添加到我的节点模块文件夹中。
仅仅阅读app.module.ts中的打字稿会不会有问题? BrowserModule 导入在那里,并且在导入数组中。这是 npm ls typescript
:
的输出
+-- @angular-devkit/build-angular@0.901.8
| `-- @angular-devkit/build-optimizer@0.901.8
| `-- typescript@3.6.5
+-- @ng-toolkit/universal@1.1.21
| +-- @ng-toolkit/_utils@1.1.51
| | `-- @schematics/angular@7.3.10
| | `-- typescript@3.2.4
| `-- @schematics/angular@0.6.8
| `-- typescript@2.7.2
`-- typescript@3.8.3
附加信息(大卫)
- app.module.ts
import { BrowserModule, Meta, Title } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { HeaderComponent } from './header/header.component';
import { FooterComponent } from './footer/footer.component';
import { HomeComponent } from './home/home.component';
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
import { SoftwareComponent } from './software/software.component';
import { MediaComponent } from './media/media.component';
import { ShopComponent } from './shop/shop.component';
import { FilmDetailsComponent } from './film-details/film-details.component';
import { ShareModalComponent } from './share-modal/share-modal.component';
import { ShareModule } from 'ngx-sharebuttons';
import { ShareButtonModule } from 'ngx-sharebuttons/button';
import { ShareIconsModule } from 'ngx-sharebuttons/icons';
@NgModule({
imports: [
ShareButtonModule,
ShareIconsModule // Optional if you want the default share icons
]
})
@NgModule({
declarations: [
AppComponent,
HeaderComponent,
FooterComponent,
HomeComponent,
SoftwareComponent,
MediaComponent,
ShopComponent,
FilmDetailsComponent,
ShareModalComponent
],
imports: [
BrowserModule,
AppRoutingModule,
FontAwesomeModule,
ShareModule,
ShareButtonModule,
ShareIconsModule
],
providers: [Meta, Title],
bootstrap: [AppComponent]
})
export class AppModule { }
- main.ts
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
platformBrowserDynamic().bootstrapModule(AppModule)
.catch(err => console.error(err));
此错误是由 app.module 中的多个 NgModule 引起的,因为第一个 NgModule 导入不包含 BrowserModule。
如果您删除第一个 NgModule,应用程序仍然可以正常工作,因为导入中的模块已经导入到第二个中
第一题
目标
我正在尝试使用 ng add @nguniversal/express-engine --clientProject [name]
将 SSR 添加到我的 Angular 项目中(这样我就可以动态预呈现元标记)
预期结果
我希望该命令能够成功执行所有脚手架和对我现有文件的必要更新,如 YouTube tutorial 中所示。
实际结果
相反,控制台是这样说的:
Installing packages for tooling via npm.
Installed packages for tooling via npm.
Cannot find BrowserModule import in /src/app/app.module.ts
但是 BrowserModule 是 在 app.module.ts 中导入的。
我试过的
- 正在重新安装包
我尝试使用 npm uninstall @nguniversal/express-engine
卸载软件包并重新 运行 上面的 ng add
,同样的问题。
关于 ng 添加 @nguniversal/express-server 的其他已发布问题似乎不适用于此处,因为这些人实际上已经创建了一些脚手架并生成了新文件 - 没有为我创建文件根本没有,但是模块确实被添加到我的节点模块文件夹中。
仅仅阅读app.module.ts中的打字稿会不会有问题? BrowserModule 导入在那里,并且在导入数组中。这是 npm ls typescript
:
+-- @angular-devkit/build-angular@0.901.8
| `-- @angular-devkit/build-optimizer@0.901.8
| `-- typescript@3.6.5
+-- @ng-toolkit/universal@1.1.21
| +-- @ng-toolkit/_utils@1.1.51
| | `-- @schematics/angular@7.3.10
| | `-- typescript@3.2.4
| `-- @schematics/angular@0.6.8
| `-- typescript@2.7.2
`-- typescript@3.8.3
附加信息(大卫)
- app.module.ts
import { BrowserModule, Meta, Title } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { HeaderComponent } from './header/header.component';
import { FooterComponent } from './footer/footer.component';
import { HomeComponent } from './home/home.component';
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
import { SoftwareComponent } from './software/software.component';
import { MediaComponent } from './media/media.component';
import { ShopComponent } from './shop/shop.component';
import { FilmDetailsComponent } from './film-details/film-details.component';
import { ShareModalComponent } from './share-modal/share-modal.component';
import { ShareModule } from 'ngx-sharebuttons';
import { ShareButtonModule } from 'ngx-sharebuttons/button';
import { ShareIconsModule } from 'ngx-sharebuttons/icons';
@NgModule({
imports: [
ShareButtonModule,
ShareIconsModule // Optional if you want the default share icons
]
})
@NgModule({
declarations: [
AppComponent,
HeaderComponent,
FooterComponent,
HomeComponent,
SoftwareComponent,
MediaComponent,
ShopComponent,
FilmDetailsComponent,
ShareModalComponent
],
imports: [
BrowserModule,
AppRoutingModule,
FontAwesomeModule,
ShareModule,
ShareButtonModule,
ShareIconsModule
],
providers: [Meta, Title],
bootstrap: [AppComponent]
})
export class AppModule { }
- main.ts
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
platformBrowserDynamic().bootstrapModule(AppModule)
.catch(err => console.error(err));
此错误是由 app.module 中的多个 NgModule 引起的,因为第一个 NgModule 导入不包含 BrowserModule。
如果您删除第一个 NgModule,应用程序仍然可以正常工作,因为导入中的模块已经导入到第二个中