ng 构建 --prod 时使用 ngx-hm-carousel 模块时出错



我正在 https://github.com/ZouYouShun/ngx-hm-carousel 尝试这个例子。它工作正常,但是当我运行此命令时:

吴建 --产品

我收到此错误:

错误 :

意外值 'NgxHmCarouselModule in D:/angular-apps/CarouselApp/node_modules/ngx-hm-carousel/lib/ngx-hm-carousel.module.d.ts' 由模块导入 '应用模块 D:/angular-apps/CarouselApp/src/app/app.module.ts'.请添加一个 @NgModule注释。

你知道缺少什么吗?

使用:
角度 CLI: 6.0.8 节点: 8.11.2

操作系统: win32 x64

这是我的应用程序。

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { NgxHmCarouselModule } from 'ngx-hm-carousel';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
NgxHmCarouselModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

在 Angular 中,我们有 2 个编译
模型

  • JIT - 即时编译:顾名思义,JIT 编译在浏览器中实时编译应用程序 运行。

  • AoT
  • - 提前编译:AoT编译在构建时编译应用程序。

默认情况下,使用开发版本,即ng serve我们得到 JIT 编译。这就是它的工作原理。应用程序代码以及角度编译器由浏览器下载。在运行时,当向应用程序发出请求时,浏览器中的 JIT 编译器会在执行应用程序代码之前对其进行编译。

在生产版本中,即ng build --prod我们得到 AoT 编译时,angular 应用程序被预编译。因此,这意味着浏览器加载可执行代码,以便它可以立即呈现应用程序,而无需等待先编译应用程序。
Basic overview of Just In Time (JIT) Vs Ahead Of Time (AOT) Compilation in Angular Applications

不幸的是,您使用的库不支持 AOT 编译

一种解决方法是调整您的angular.json文件集"aot": false"buildOptimizer": false

"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": false,<-----here
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": false<----here
}

和执行ng build --prod
,如果你不想修改你的angular.json,你可以去

ng build --prod --aot=false --build-optimizer=false

或者,您可以修改 package.json 中的构建脚本

"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build --prod --aot=false --build-optimizer=false",

并执行npm run build

我是这个包的作者。此问题已在ngx-hm-carousel@1.2.1中修复。有关更多详细信息,请访问 https://alanzouhome.firebaseapp.com/package/NgxHmCarousel。

最新更新