【问题标题】:SvelteKit build with static adapter works with paths.base: "/<basepath>" but not with default paths.base: ""使用静态适配器构建的 SvelteKit 适用于 paths.base: \"/<basepath>\" 但不适用于默认路径。base: \"\"
【发布时间】:2023-02-26 03:01:28
【问题描述】:

我正在尝试在 github pages 和 vercel 上发布一个网站。 GitHub 一个来自 ../jonasfroeller,vercel 一个来自 ../jonasfroeller-noprefix。 GitHub 构建有效,但普通的静态版本不再有效。 (我在实现 GitHub-pages 版本之前尝试过,现在它不再工作了......)

链接示例:

<script>
import { base } from '$app/paths'; 
import { locale } from '$translation/i18n-svelte'; 
</script>

<a href="{base}/{$locale}/projects">
    <button class="btn btn-xs sm:btn-sm md:btn-md lg:btn-lg">Projects</button>
</a>

svelte.config.js:

import adapter from '@sveltejs/adapter-static';
import preprocess from 'svelte-preprocess';
const dev = process.argv.includes('dev'); // || process.env.NODE_ENV === 'developement'

const ghPages = false; // prefix (repo name) needed if hosted on gh (default = false => netlify, vercel...)
const basePath = ghPages == true ? (dev ? '' : '/jonasfroeller') : ''; // base: dev ? "" : "/jonasfroeller" (gh-pages) || "" (other)
const buildDir = ghPages == true ? '../jonasfroeller' : '../jonasfroeller-noprefix'; // ../jonasfroeller (gh-pages) || ../jonasfroeller-noprefix (other)

/** @type {import('@sveltejs/kit').Config} */
const config = {
    kit: {
        adapter: adapter({
            pages: buildDir,
            assets: buildDir,
            fallback: null,
            precompress: false,
            strict: true
        }),
        paths: {
            base: basePath
        },
        appDir: 'portfolio',
        alias: {
            $main: 'src',
            $translation: 'src/lib/translations',
            $image: 'src/lib/assets/imgs',
            $component: 'src/lib/components',
            $store: 'src/lib/stores',
            $script: 'src/lib/scripts'
        },
        prerender: {
            entries: ['/en/legal/terms-and-conditions', '/de/legal/terms-and-conditions']
        }
    },
    preprocess: [
        preprocess({
            postcss: true
        })
    ]
};

export default config;

结果:
我在预渲染过程中遇到的错误:node_modules/@sveltejs/kit/src/core/postbuild/prerender.js:412
错误:以下路线被标记为可预呈现,但未预呈现,因为在抓取您的应用程序时未找到它们:
- /[语言]

我认为如果它适用于基本路径,它也适用于默认路径,这是一个空字符串,但事实并非如此。为什么?

【问题讨论】:

标签: build sveltekit prerender base-path pre-rendering


【解决方案1】:

我忘记了我的重定向...

开发 || base == '' 在 hooks、utils 和 layout 中代替 dev ...

【讨论】:

    猜你喜欢
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多