Javascript 将PWA添加到angular 8-模块构建失败

Javascript 将PWA添加到angular 8-模块构建失败,javascript,node.js,angular,typescript,progressive-web-apps,Javascript,Node.js,Angular,Typescript,Progressive Web Apps,我有一个8角的应用程序。 在这个应用程序中,我有三个项目 我想用这个命令添加@angular/pwa ng add @angular/pwa && ng build --prod 但是当安装PWA时,我得到了一个错误 错误 ./node_modules/@angular/service worker/fesm2015/service-worker.js 模块生成失败:错误:enoint:没有此类文件或目录,请打开 'C:\Development\Repositories\app

我有一个8角的应用程序。 在这个应用程序中,我有三个项目

我想用这个命令添加
@angular/pwa

ng add @angular/pwa && ng build --prod
但是当安装PWA时,我得到了一个错误

错误 ./node_modules/@angular/service worker/fesm2015/service-worker.js 模块生成失败:错误:enoint:没有此类文件或目录,请打开 'C:\Development\Repositories\app\node_modules@angular\服务工作者\fesm2015\service worker.js'

在CHROME控制台中,我得到

Uncaught TypeError: Cannot read property 'id' of undefined
    at registerNgModuleType (core.js:34469)
    at core.js:34487
    at Array.forEach (<anonymous>)
    at registerNgModuleType (core.js:34483)
    at core.js:34487
    at Array.forEach (<anonymous>)
    at registerNgModuleType (core.js:34483)
    at core.js:34487
    at Array.forEach (<anonymous>)
    at registerNgModuleType (core.js:34483)
现在在我的项目
src
中,我得到了新的文件
manifest.webmanifest
,在项目的根目录中我得到了
ngsw config.json
,在项目模块中我得到了
ServiceWorkerModule.register('/ngsw-worker.js',{enabled:environment.production})

但仍然会出现同样的错误

编辑:

这是我的文件夹结构。这就是angular CLI的添加方式。我需要添加另一个文件吗

我的任何文件夹中都没有
gsw worker.js

另外,当我为
“$schema”打开
ngsw config.json
时:“../../node\u modules/@angular/service worker/config/schema.json”
我得到

无法从c:\Development\Repositories\app\app frontend\node\u modules\@angular\service worker\config\schema.json加载架构:enoint:没有这样的文件或目录,打开“c:\Development\Repositories\app\app frontend\node\u modules\@angular\service worker\config\schema.json”

但是如果我查看
node\u modules
shema.json是否存在

(root -angular.json, package.json... there is no any manifest.webmanifest and ngsw-config.json)
 |
 |
 |----projects
        |
        |----app1
               |------src
               |       |------app
               |       |        |-app.module.ts (here is in imports ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production })) 
               |       |
               |       |-manifest.webmanifest
               |
               |
      ngsw-config.json
      tsconfig.json
      tsconfig.app.json
      tsconfig.spec.json

Mabey in ma app.module.ts(在我的项目中)是个问题,因为我需要注册
'ngsw-worker.js'
,但我在我的应用程序中找不到该文件,Mabey angular CLI没有添加此文件或我不需要此文件?

请注意,添加PWA就是使用以下命令将此功能添加到现有项目之一:

ng add @angular/pwa --project *project-name*

有关更多信息,请查看angular的官方文档:

您的应用程序中可能存在多个错误,请尝试使用正确的方法再次添加pwa

ng add @angular/pwa --project *project-name*
然后用

ng build --prod
以下是供您参考的链接-

Chrome控制台错误

您得到该错误是因为您绑定了一个对象的访问id,而该对象并没有为您需要正确处理的对象定义

对于ex-
let id=obj.id?obj.id:“”

首先尝试修复该错误,然后构建它。如果它不起作用,请删除节点_模块,然后重新安装并构建它


希望这对您有所帮助:)

在将pwa安装到angular project之前,请先做几件事。首先,您需要更新@angular/cli以确保拥有最新版本

npm i -g @angular/cli
然后跑

ng new projectname
然后将pwa添加到您的项目中

ng add @angular/pwa --project *project-name*

ng build --prod

让它工作的步骤

  • npm卸载@angular/pwa

  • npm缓存清理

随机误差§ 一些奇怪的问题可以通过简单地运行npm cache clean并重试来解决。 如果您在npm安装中遇到问题,请使用-verbose选项查看更多详细信息

  • 所有这些
    ng更新之后
这将修复此错误。
发生此错误的原因是package.json中的某些依赖项不是最新的,它们会弄乱pwa

你能在stackblitz上分享你的代码吗?嗨,谢谢。我总是像你描述的那样检查,但是这个问题与PWA直接有关。。。我从我的应用程序中完全删除了PWA,并按照您的建议安装,但同样的问题在这里。。。如果我在没有PWA的情况下构建,就不会有错误。在同一目录下有三个项目是什么意思?这三个是不同的角度项目吗?还有一件事是你在主应用程序目录中添加pwa吗?我编辑我的问题。。。我有一个有多个项目的angular应用程序inside@Arter我写了一篇文章将逐步PWA添加到Angular应用程序中:这篇文章还提到了一个正在运行的Github Angular 8 PWA项目,您可以参考它进行比较。@Francesco thnx。。。我已经看过你的教程了。但问题在于npm依赖版本。我编辑了我的问题,请看一看。此外,我发现最后一个CLI版本很难解决。你能把你的代码更新到github吗我很乐意帮助youthnx获得你的帮助,但是在发布之前我不能把我的代码更新到任何公共平台上。。。我试着提出另一个简化的问题
ng build --prod