子目录中pwa的asp mvc 5 angular 9相对路径问题

问题描述

我有一个angular9的Asp mvc 5网站。

我的angular 9内置在/ Scripts / angulardist目录中。

{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json","version": 1,"newProjectRoot": "projects","projects": {
    "App": {
        "root": "","sourceRoot": "src","projectType": "application","prefix": "app","schematics": {},"architect": {
            "build": {
                "builder": "@angular-devkit/build-angular:browser","options": {
                    "outputPath": "Scripts/angulardist/","index": "src/index.html","main": "src/main.ts",

我将在认的mvc控制器操作(主页/索引)中返回角度index.html文件(src / index.html):

        public ActionResult Index()
    {
        var htmlPath = Server.MapPath("~/Scripts/angulardist/index.html");
        return new FilePathResult(htmlPath,"text/html");
    }

ngsw-config.json配置为使用index.html:

{
"$schema": "./node_modules/@angular/service-worker/config/schema.json","index": "/index.html","assetGroups": [
    {
        "name": "app","installMode": "prefetch","resources": {
            "files": [
                "/favicon.ico","/index.html","/manifest.json","/*.css","/*.js" 
            ],

最后,我通过app.module中的ServiceWorker模块注册了Service Worker:

         ServiceWorkerModule.register('/Scripts/angulardist/ngsw-worker.js',{ scope: '/Scripts/angulardist/',registrationStrategy: 'registerImmediately' }),

因此,由于angular和pwa位于子目录中,所以我设法获得要在服务工作者中注册的相对路径的唯一方法是使用:

ng build --prod --base-href=/Scripts/angulardist/

因此ngsw.json中的网址现在看起来像这样:

      "urls": [
    "/Scripts/angulardist/1-es2015.a1dd7840a1fc1224a25c.js","/Scripts/angulardist/1-es5.a1dd7840a1fc1224a25c.js",

因此申请工作正常,服务人员已注册。但是问题是我的网址现在是:

http://localhost:5114/Scripts/angulardist/login

所以我的问题是,如何在不更改我的子目录(/ Scripts / angulardist)的情况下为服务工作者中生成的.js和.css文件设置相对路径。

还有另一种设置方法吗?

我遇到的问题:

  1. 我不想/不需要在URL中显示/ Scripts / angulardist路径
  2. 所有http调用现在都无法通过网络api,因为相对路径已附加到api调用

修改

我尝试使用ng build --prod --base-href =。/,然后在不使用/ Scripts / angulardist的情况下加载url,并且服务工作程序中的相对路径可以正常工作,但是它看起来像服务范围工作人员无法覆盖根网址,并且应用程序无法离线运行

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...