使用 Postgres 将 Nuxt 应用程序部署到 Cloudflare 失败

问题描述 投票:0回答:1

我在 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',
  },
postgresql nuxt.js vite cloudflare nitro
1个回答
0
投票

我遇到了同样的问题,但我正在部署到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']
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.