我在 Cloudflare 上部署了一个由 Supabase 支持的 Nuxt 应用程序。效果很好。
现在我正在尝试切换到 Kysely 以更好地控制数据库迁移。 Postgres 方言由 Postgres 模块支持,pg 或 postgres 在本地工作。
当我将更改部署到 Cloudflare 时,在构建预渲染时出现错误。对于 postgres,错误是:
[error] [nitro] Error: Cannot resolve "cloudflare:sockets" from "/opt/buildhome/repo/node_modules/postgres/cf/polyfills.js" and externals are not allowed!
类似的事情也发生在 pg 上,尽管它抱怨 pg-native。
Cannot resolve "pg-native" from "/home/dave/projects/nuclearambitions/won-on-nuxt/node_modules/pg/lib/native/client.js" and externals are not allowed!
在后一种情况下,我找到的“解决方案”是从构建中排除 pg-native。我试过这个:
vite: {
build: {
rollupOptions: {
external: ['pg-native'],
},
},
},
但这并没有改变任何事情。
我对这个组合运气不好吗:Nuxt (Nitro)、Postgres、Cloudflare?或者有人知道在 Vite 构建中排除外部的正确方法吗?
顺便说一下,如果我使用 Cloudflare 预设在本地构建,可能会导致错误。来自
nuxt.config.ts
nitro: {
preset: 'cloudflare-pages',
},
我遇到了同样的问题,但我正在部署到netlify。
您的解决方案有效,但因为它是服务器端的,所以您必须将其添加到硝基汇总中。
以下是我遇到的错误以及对我有用的解决方案:
错误:
“6:34:50 PM:[成功] [硝基]生成公共分区 6:34:50 PM:[信息] [硝基] 构建 Nuxt Nitro 服务器(预设:
netlify-edge
)
6:34:55 PM:“构建站点”阶段失败:构建脚本返回非零退出代码:2(https://ntl.fyi/exit-code-2)
6:34:55 PM:[错误] [硝基]错误:无法从“/opt/build/repo/src/server/utils/drizzle.ts”解析“postgres”,并且不允许使用外部!
下午 6:34:55:未定义
6:34:55 PM:[错误] 无法从“/opt/build/repo/src/server/utils/drizzle.ts”解析“postgres”,并且不允许使用外部!
下午 6:34:55:在 Object.resolveId (node_modules/硝基包/dist/硝基.mjs:1970:17)
6:34:55 PM:在异步 PluginDriver.hookFirstAndGetPlugin (node_modules/rollup/dist/es/shared/node-entry.js:20630:28)
6:34:55 PM:在异步resolveId处(node_modules/rollup/dist/es/shared/node-entry.js:19234:26)
6:34:55 PM:在异步 ModuleLoader.resolveId (node_modules/rollup/dist/es/shared/node-entry.js:19663:15)
6:34:55 PM:在异步 Object.resolveId (node_modules/@rollup/plugin-commonjs/dist/es/index.js:588:10)
6:34:55 PM:在异步 PluginDriver.hookFirstAndGetPlugin (node_modules/rollup/dist/es/shared/node-entry.js:20630:28)
6:34:55 PM:在异步resolveId处(node_modules/rollup/dist/es/shared/node-entry.js:19234:26)
6:34:55 PM:在异步 ModuleLoader.resolveId (node_modules/rollup/dist/es/shared/node-entry.js:19663:15)
6:34:55 PM:在异步node_modules/rollup/dist/es/shared/node-entry.js:19966:50
6:34:55 PM:[错误] 无法从“/opt/build/repo/src/server/utils/drizzle.ts”解析“postgres”,并且不允许使用外部!
6:34:55 PM:错误:脚本“build”退出,代码为 1
下午 6:34:55:
6:34:55 PM:“build.command”失败”
解决方案:
nitro: { preset: 'netlify-edge', rollupConfig: { external: ['postgres'] } }