如何将 sveltekit 应用程序部署到 dfinity 容器?

How do I deploy a sveltekit app to a dfinity container?

Difinity 是一个区块链容器。我需要一个关于如何向其部署标准 sveltekit 应用程序的可靠示例。

他们的网页没有涵盖 sveltekit https://dfinity.org/svelte/

这是我的 dfx.json 文件:

{
    "canisters": {
        "assets": {
            "dependencies": [],
            "frontend": {
                "entrypoint": "build/index.html"
            },
            "source": ["build"],
            "type": "assets"
        }
    },
    "defaults": {
        "build": {
            "output": "canisters",
            "packtool": ""
        }
    },
    "dfx": "0.9.3",
    "networks": {
        "local": {
            "bind": "127.0.0.1:8000",
            "type": "ephemeral"
        },
        "ic": {
            "providers": ["https://mainnet.dfinity.network"],
            "type": "persistent"
        }
    },
    "version": 1
}

命令 npm run build 将在 ./build

中构建我的 sveltekit 应用程序的静态版本

部署时出现错误,可能是dfx版本问题。使用较旧版本的 dfx 制作的项目可能与较新版本的 dfx 不兼容。

我们通过添加一些 polyfill 解决了这个问题:

import { NodeGlobalsPolyfillPlugin } from '@esbuild-plugins/node-globals-polyfill';

....



        vite: {
            optimizeDeps: {
                esbuildOptions: {
                    // Node.js global to browser globalThis
                    define: {
                        global: 'globalThis'
                    },
                    // Enable esbuild polyfill plugins
                    plugins: [
                        NodeGlobalsPolyfillPlugin({
                            buffer: true,
                            global: true,
                            process: true,
                            url: true,
                            assert: true,
                            crypto: true,
                            http: true,
                            https: true,
                            os: true,
                            stream: true
                        })
                    ]
                }
            },
...
}

在svelte.config.js