精简版Firebase托管损坏的CSS和其他资产链接

问题描述

我试图将我的Sapper项目托管在firebase中,由于firebase添加baseUrl:/my-project-name/us-central1/ssr,我的所有CSS和其他资产链接都被破坏了。所有资产链接都以/my-project-name/us-central1/ssr开头,并导致404错误

我的package.json

{
  "name": "Project_Name","description": "Project_description","version": "0.0.1","engines": {
    "node": "10"
  },"scripts": {
    "dev": "sapper dev","build": "sapper build --legacy","export": "sapper export --legacy","start": "node __sapper__/build","cy:run": "cypress run","cy:open": "cypress open","test": "run-p --race dev cy:run","serve": "firebase emulators:start --only functions","shell": "firebase functions:shell","fb_start": "npm run shell","deploy": "npm run build && firebase deploy","logs": "firebase functions:log"
  },"dependencies": {
    "compression": "^1.7.1","express": "^4.17.1","firebase-admin": "^8.10.0","firebase-functions": "^3.6.1","sirv": "^1.0.0"
  },"devDependencies": {
    "npm-run-all": "^4.1.5","sapper": "^0.28.0","svelte": "^3.17.3","@babel/core": "^7.0.0","@babel/plugin-Syntax-dynamic-import": "^7.0.0","@babel/plugin-transform-runtime": "^7.0.0","@babel/preset-env": "^7.0.0","@babel/runtime": "^7.0.0","@rollup/plugin-babel": "^5.0.0","@rollup/plugin-commonjs": "^14.0.0","@rollup/plugin-node-resolve": "^8.0.0","@rollup/plugin-replace": "^2.2.0","rollup": "^2.3.4","rollup-plugin-svelte": "^6.0.0","rollup-plugin-terser": "^7.0.0","firebase-functions-test": "^0.2.0"
  }
}

我的src / server.js看起来像这样:

import sirv from "sirv";
import express from "express";
import compression from "compression";
import * as sapper from "@sapper/server";

const { PORT,NODE_ENV } = process.env;
const dev = NODE_ENV === "development";

const expressServer = express().use(
    compression({ threshold: 0 }),sirv("static",{ dev }),sapper.middleware()
);

if (dev) {
    expressServer.listen(PORT,(err) => {
        if (err) console.log("error",err);
    });
}

export { expressServer };

我的index.js看起来像这样:

const functions = require("firebase-functions");
const { expressServer } = require("./__sapper__/build/server/server");

exports.ssr = functions.https.onRequest(expressServer);

我该如何解决

谢谢。

解决方法

要固定资产路径,只需在资产导入中始终添加“ /”,例如

nextclound

这样做,firebase函数的基本URL不会在您的资产链接之前添加

相关问答

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