为什么当我想要执行 ng build --prod时会出现这个问题?

5

在./node_modules/ng2-pdf-viewer/fesm5/ng2-pdf-viewer.js中发生错误:

模块构建失败(来自./node_modules/@angular-devkit/build-optimizer/src/build-optimizer/webpack-loader.js):

类型错误:无法读取未定义的“kind”属性

在E:\ Mohamed Mostafa Work \ new_project \ reservation \ node_modules @ angular-devkit \ build-optimizer \ src \ transforms \ scrub-file.js的isAngularDecoratorMetadataExpression函数出现问题

在E:\ Mohamed Mostafa Work \ new_project \ reservation \ node_modules @ angular-devkit \ build-optimizer \ src \ transforms \ scrub-file.js的checkNodeForDecorators函数中检查节点装饰器

在E:\ Mohamed Mostafa Work \ new_project \ reservation \ node_modules @ angular-devkit \ build-optimizer \ node_modules \ typescript \ lib \ typescript.js的visitNodes函数中访问节点

请保留HTML标记。


请提供您的示例代码。 - Velusamy Venkatraman
当您使用--prod标志构建项目时,您的应用程序将使用Ahead of Time(AOT)编译。这也是在v9中本地运行angular应用程序的默认设置。如果您使用的是8或更早版本,则在本地运行ng serve将使用即时(JIT)编译器。因此,可能会在应用程序中引入JIT编译器无法捕获的问题,因此只有在构建生产环境时才能看到错误。为了排除这个原因,只需运行ng serve --aot以在本地运行项目。如果编译成功,则不是这个问题的原因。 - Kyler Johnson
你解决了这个问题吗?我将6降级为ng2-pdf-viewer@5.3.4,但问题仍未解决。 - Faraz Shaikh
8个回答

6

我也遇到了同样的错误,但最终通过以下解决方案解决了问题。 首先卸载ng2-pdf-viewer阅读器, 然后安装 - npm install ng2-pdf-viewer@5.3.4


3

将angular.json文件中下面的属性设置为false,解决了我的问题:

"buildOptimizer": false


2

从根目录中删除package-lock.json
编辑package.json并将ng2-pdf-viewer版本更改如下:

"ng2-pdf-viewer": "5.3.4"

运行以下命令

npm install
npm build --prod 

它应该解决这个问题。


2

经过长时间的搜索,我找到了解决方法。

将 @angular-devkit/build-angular 升级到版本:“~0.803.19”,然后生产环境构建就可以正常工作了。在 package.json 中进行了以下更改。

"devDependencies": {
  "@angular-devkit/build-angular": "~0.803.19",
   ...
}

这适用于ng2-pdf-viewer: 6.3.0和Angular 8.3.19
希望这能帮到你!

1
请在package.josn文件中将您的angular-devkit依赖项更改为最新版本:
我已经更改了以下依赖项的版本,它可以与--prod命令一起使用。
"devDependencies": { "@angular-devkit/architect": "~0.803.20", "@angular-devkit/build-angular": "~0.803.20", "@angular-devkit/core": "~8.3.20", "@angular-devkit/schematics": "~8.3.20", }

这个解决方案非常有效 :)

0

进入你的应用程序文件夹并首先运行npm i命令,你似乎缺少了十几个包


我已经尝试了这个方法,但问题仍然存在。 - mohame mostafa

0

尝试删除您的node_modules文件夹,然后运行npm i


我已经尝试了这个方法,但问题仍然存在。 - mohame mostafa
你正在使用哪个版本的Angular? - Prosenjit Manna
有时由于package-lock.json文件的原因,包无法安装或更新。请尝试从项目根目录中删除该文件,然后运行npm i。 - Prosenjit Manna

0

低版本的ng2-pdf-viewer对我来说工作得很好


这是一个答案还是一个评论? - Michael Nelles
当然,如果您使用ng2-pdf-view版本6.0.0,则不会出现此错误(我尚未测试更高版本)。 - Minh Đức

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接