SvelteKit - 部署 - @sveltejs/adapter-static 不更新后备页面中的静态路径
SvelteKit - Deployment - @sveltejs/adapter-static not updating static paths in fallback page
我是第一次探索 SvelteKit,我构建了我的第一个简单应用程序,我想将它作为静态页面部署到我的 Apache 服务器
据我了解 adapter-static 是可行的方法,所以我安装了它并更改了我的 svelte.config.js 文件:
import preprocess from 'svelte-preprocess';
import adapter from '@sveltejs/adapter-static';
/** @type {import('@sveltejs/kit').Config} */
const config = {
preprocess: preprocess(),
kit: {
adapter: adapter({
paths: { base: "/PERSONAL_PATH" },
fallback: 'index.html',
precompress: false,
})
}
};
export default config;
现在:
npm 运行 build 运行s 没有任何错误,问题是当我检查 index.html 页面的所有依赖项 (或者样式表和 JS 文件的 URL,如果你愿意...) 有 2 个问题,如下所示:
- 具有绝对路径,这使得无法将页面的源移动到任何其他位置
- 不在我希望它们所在的文件夹 PERSONAL_PATH 中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="description" content="" />
<link rel="icon" href="./favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta http-equiv="content-security-policy" content="">
<link rel="modulepreload" href="/_app/start-25574c6c.js">
<link rel="modulepreload" href="/_app/chunks/vendor-868763d8.js">
</head>
<body>
<div>
<script type="module" data-hydrate="45h">
import { start } from "/_app/start-25574c6c.js";
start({
target: document.querySelector('[data-hydrate="45h"]').parentNode,
paths: {"base":"","assets":""},
session: {},
route: true,
spa: true,
trailing_slash: "never",
hydrate: null
});
</script></div>
</body>
</html>
我哪里弄错了?几个小时以来我一直在努力解决这个问题,但我现在卡住了
感谢您的帮助
好的,我发现我设置了错误的参数,所以我修正了它,这是有效的 svelte.config.js (这意味着此配置实际上将您的静态文件设置为自定义路径,必须是绝对路径):
import preprocess from 'svelte-preprocess';
import adapter from '@sveltejs/adapter-static';
/** @type {import('@sveltejs/kit').Config} */
const config = {
preprocess: preprocess(),
kit: {
// SET THE PATHS HERE
paths: { assets: "", base: "/PERSONAL_PATH" },
adapter: adapter({
// NOT HERE!
// paths: { base: "/PERSONAL_PATH" },
fallback: 'index.html',
precompress: false,
})
}
};
export default config;
我是第一次探索 SvelteKit,我构建了我的第一个简单应用程序,我想将它作为静态页面部署到我的 Apache 服务器
据我了解 adapter-static 是可行的方法,所以我安装了它并更改了我的 svelte.config.js 文件:
import preprocess from 'svelte-preprocess';
import adapter from '@sveltejs/adapter-static';
/** @type {import('@sveltejs/kit').Config} */
const config = {
preprocess: preprocess(),
kit: {
adapter: adapter({
paths: { base: "/PERSONAL_PATH" },
fallback: 'index.html',
precompress: false,
})
}
};
export default config;
现在:
npm 运行 build 运行s 没有任何错误,问题是当我检查 index.html 页面的所有依赖项 (或者样式表和 JS 文件的 URL,如果你愿意...) 有 2 个问题,如下所示:
- 具有绝对路径,这使得无法将页面的源移动到任何其他位置
- 不在我希望它们所在的文件夹 PERSONAL_PATH 中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="description" content="" />
<link rel="icon" href="./favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta http-equiv="content-security-policy" content="">
<link rel="modulepreload" href="/_app/start-25574c6c.js">
<link rel="modulepreload" href="/_app/chunks/vendor-868763d8.js">
</head>
<body>
<div>
<script type="module" data-hydrate="45h">
import { start } from "/_app/start-25574c6c.js";
start({
target: document.querySelector('[data-hydrate="45h"]').parentNode,
paths: {"base":"","assets":""},
session: {},
route: true,
spa: true,
trailing_slash: "never",
hydrate: null
});
</script></div>
</body>
</html>
我哪里弄错了?几个小时以来我一直在努力解决这个问题,但我现在卡住了
感谢您的帮助
好的,我发现我设置了错误的参数,所以我修正了它,这是有效的 svelte.config.js (这意味着此配置实际上将您的静态文件设置为自定义路径,必须是绝对路径):
import preprocess from 'svelte-preprocess';
import adapter from '@sveltejs/adapter-static';
/** @type {import('@sveltejs/kit').Config} */
const config = {
preprocess: preprocess(),
kit: {
// SET THE PATHS HERE
paths: { assets: "", base: "/PERSONAL_PATH" },
adapter: adapter({
// NOT HERE!
// paths: { base: "/PERSONAL_PATH" },
fallback: 'index.html',
precompress: false,
})
}
};
export default config;