问题描述
我试图将我的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不会在您的资产链接之前添加