Javascript 如何让非角度服务人员以角度运行
我一直在尝试将一个服务人员应用到一个全新的Angular应用程序中。它不是angular的软件,只是开箱即用的api。我想有目的地使用这个,而不是Angular(以防万一)。阅读之后,我的问题似乎与路径问题有关,但我相信我的路径是正确的。我看到的另一个问题是,我们无法使用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
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
文件为空,mymain.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
)