Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何让非角度服务人员以角度运行_Javascript_Angular_Service Worker - Fatal编程技术网

Javascript 如何让非角度服务人员以角度运行

Javascript 如何让非角度服务人员以角度运行,javascript,angular,service-worker,Javascript,Angular,Service Worker,我一直在尝试将一个服务人员应用到一个全新的Angular应用程序中。它不是angular的软件,只是开箱即用的api。我想有目的地使用这个,而不是Angular(以防万一)。阅读之后,我的问题似乎与路径问题有关,但我相信我的路径是正确的。我看到的另一个问题是,我们无法使用ng SERVICE并成功注册软件,因此我开始执行ng build--prod,然后使用http server部署它,但仍然出现以下错误: Service worker registration failed: TypeErro

我一直在尝试将一个服务人员应用到一个全新的Angular应用程序中。它不是angular的软件,只是开箱即用的api。我想有目的地使用这个,而不是Angular(以防万一)。阅读之后,我的问题似乎与路径问题有关,但我相信我的路径是正确的。我看到的另一个问题是,我们无法使用
ng SERVICE
并成功注册软件,因此我开始执行
ng build--prod
,然后使用
http server
部署它,但仍然出现以下错误:

Service worker registration failed: TypeError: Failed to register a ServiceWorker: A bad HTTP response code (404) was received when fetching the script.
成功注册此软件需要哪些步骤

此外,我的文件结构是:

- main.ts
- index.html
- service-worker.js
service worker.js
文件为空,my
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();
}

if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('./service-worker.js')
  .then(registration => console.log('Service worker registration succeeded:', registration)
  , error => console.log('Service worker registration failed:', error));
} else {
  console.log('Service workers are not supported.');
}
platformBrowserDynamic().bootstrapModule(AppModule)
  .catch(err => console.error(err));```

所以我最终想出了一个解决方案,我很想得到反馈,因为我缺乏理解

由于我正在运行angular build命令,所以我查看了
angular.json
文件并签出了build命令。我已经将
service worker.js
添加到
assets
数组中(以
src/service worker.js
的形式)以及我的
manifest.json
文件也添加到了该数组中,因为我遇到了与上述问题类似的问题,并且修复了所有问题

执行上述操作后,软件成功注册。我猜是因为angular编译器将所有内容编译到一个输出文件中,因为它与
index.html
的结构相同,并且将它们指定为资产将使其不包含在“捆绑”中

注意 执行此解决方案还允许我使用
ngserve
(因此无需构建和使用
httpserver