如何将 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
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
部署时出现错误,可能是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