Angular 6升级后,ng build --prod出现“错误:期望找到ngsw-config.json配置文件”的问题。

19

更新过程很顺利,但现在构建时出现以下错误:

错误:期望在 /Users/nathanielmay/Code/firebaseTest 文件夹中找到 ngsw-config.json 配置文件。请提供该文件或在 angular.json 配置文件中禁用 Service Worker。

我查看了我的 angular.json 文件,并发现在这一行上:

"ngswConfigPath": "/src/ngsw-config.json",

属性 ngswConfigPath 不被允许。

我找不到新的 angular.json 的 API,但似乎需要以不同的方式指定路径。

ng update @angular/pwa 也无效。

如何解决这个错误?

5个回答

37
请确保在根目录下构建应用程序。我遇到了同样的问题,从根目录构建解决了我的问题。

1
我的项目是Angular多项目,而不是在根文件夹中进行构建命令,我在“项目”文件夹中进行了操作,后来回到根目录就没有问题了。 - Amirreza

17

我不确定如何添加"ngswConfigPath": "/src/ngsw-config.json",但我将其删除后就可以顺利构建了。

接下来,我遇到的问题是在升级期间,ngsw-config.json已从src移动到项目根目录。 我必须将我的更新复制到根ngsw-config.json中,以便服务工作器能够正确注册。


6

对于我的情况,问题与路径前面添加的/符号有关,因此我使用了"ngswConfigPath": "src/ngsw-config.json"而不是"ngswConfigPath": "/src/ngsw-config.json",问题得到解决。


1
我遇到了同样的问题,去掉末尾的 / 就解决了。 - Francesco
1
我在从ng5升级到ng6后遇到了同样的问题。删除尾随的/对我也起了作用。 - Paul Meems

3

实际上,文件ngsw-config.json已经生成了,但是在不同的位置上。首先,在您的angular.json/angular-cli.json配置文件中禁用Service Worker。然后在终端上运行ng build --prod命令,它应该可以无错误运行。

接着,在您的angular.json/angular-cli.json中启用服务工作器,再次在终端上运行ng build --prod命令即可。


1
这对我有用,使用@nrwl/nx。从angular.json中删除serviceWorker: true,使用ng build myapp --prod,还原angular.json,然后再次构建。 Presto。 - sneurlax
@sneurlax 我也使用 @nrwl/nx,但你的解决方案对我不起作用。 - Kamran Taghaddos

0

您可以使用官方Angular网站的链接来了解PWA(服务工作者)。

无论如何,您都可以运行此命令自动配置应用程序的PWA

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

或者,如果你在寻找特定版本的 PWA,则可以运行以下命令(下面命令中的“version”一词指的是 PWA 的版本。例如:@13.2.0):

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

通过运行此命令,将进行以下更改:
  1. src文件夹中创建manifest.webmanifest
  2. 同时,在根目录中创建ngsw-config.json
  3. 并且,在angular.json文件中进行一些次要更改(服务工作器配置)

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