首页 > 解决方案 > 当我使用自定义域在 Google Cloud Run 中实现一个 sveltekit 项目时加载资源失败

问题描述

描述错误:我使用 Google Cloud Run 通过节点适配器运行我的 svelte kit 应用程序。它似乎适用于默认版本,但对于我的自定义域,它无法加载 [slug].svelte 路由中的资源。

默认版本:

https://youernes-22w6ta6irq-ew.a.run.app/yhoyquetoca
https://youernes-22w6ta6irq-ew.a.run.app/planes/UEVytEBG6rfcLrdqflD8TsjmCRn2_1611080173358

自定义域版本:

https://youernes.com/yhoyquetoca
https://youernes.com/planes/UEVytEBG6rfcLrdqflD8TsjmCRn2_1602059251917

在自定义域版本中,虽然它可以从脚本模块获取数据,但我无法访问信息。

我使用节点适配器,这是我的以下配置:

const sveltePreprocess = require("svelte-preprocess");
    const node = require('@sveltejs/adapter-node');
    const pkg = require('./package.json');

    /** @type {import('@sveltejs/kit').Config} */
    module.exports = {
        preprocess: [
            sveltePreprocess({
                defaults: {
                    style: "postcss",
                },
                postcss: true
            }),
        ],
        kit: {
            hostHeader: 'X-Forwarded-Host',
            // By default, `npm run build` will create a standard Node app.
            // You can create optimized builds for different platforms by
            // specifying a different adapter
            adapter: node(),

            // hydrate the <div id="svelte"> element in src/app.html
            target: '#svelte',

            vite: {
                ssr: {
                    noExternal: Object.keys(pkg.dependencies || {})
                }
            }
        }
    };

第一次我运行 npm run build

第二我使用码头工人

从节点:12.17

工作目录 /youernes

环境端口=8080

环境主机=0.0.0.0

复制 。.

CMD [“节点”,“构建/”]

当我访问 planes 文件夹时,出现以下错误:

GET https://youernes.com/_app/pages/planes/[slug].svelte-098e0796.js net::ERR_ABORTED 404
GET https://youernes.com/_app/assets/pages/planes/[slug].svelte-377bb070.css net::ERR_ABORTED 404

Failed to fetch dynamically imported module: https://youernes.com/_app/pages/planes/[slug].svelte-098e0796.js

TypeError: Failed to fetch dynamically imported module: https://youernes.com/_app/pages/planes/[slug].svelte-098e0796.js

如何重现问题以获得解决方案:您必须使用节点适配器实现一个带有 [slug].svelte 路由的 svelte kit 项目,然后使用带有自定义域的谷歌云运行来实现它。有人可以帮助我,甚至尝试过吗?

非常感谢大家。

标签: sveltegoogle-cloud-runsvelte-3sveltekit

解决方案


最后我通过在谷歌云运行上映射自定义域解决了这个问题


推荐阅读