Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: add D1 + Cloudflare Pages + Nuxt 3 #5040

Merged
merged 17 commits into from
Jun 7, 2024
Merged

test: add D1 + Cloudflare Pages + Nuxt 3 #5040

merged 17 commits into from
Jun 7, 2024

Conversation

jkomyno
Copy link
Contributor

@jkomyno jkomyno commented Jun 4, 2024

@jkomyno jkomyno requested review from janpio and a team as code owners June 4, 2024 14:00
@jkomyno jkomyno requested review from Jolg42 and aqrln and removed request for a team June 4, 2024 14:00
@Jolg42 Jolg42 added this to the 5.16.0 milestone Jun 4, 2024
Copy link
Contributor

@Jolg42 Jolg42 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

@Jolg42
Copy link
Contributor

Jolg42 commented Jun 4, 2024

@jkomyno note that this fails with
https:/prisma/ecosystem-tests/actions/runs/9368509481/job/25790910081?pr=5040#step:8:817

✘ [ERROR] A request to the Cloudflare API (/accounts/3dc90bc6bf50e78795c6f70865397810/pages/projects/d1-cfpages-nuxt) failed.

  Project not found. The specified project name does not match any of your existing projects. [code: 8000007]

@jkomyno
Copy link
Contributor Author

jkomyno commented Jun 4, 2024

@jkomyno note that this fails with https:/prisma/ecosystem-tests/actions/runs/9368509481/job/25790910081?pr=5040#step:8:817

✘ [ERROR] A request to the Cloudflare API (/accounts/3dc90bc6bf50e78795c6f70865397810/pages/projects/d1-cfpages-nuxt) failed.

  Project not found. The specified project name does not match any of your existing projects. [code: 8000007]

Uhm 🧐

Screenshot 2024-06-04 at 16 12 59

@jkomyno
Copy link
Contributor Author

jkomyno commented Jun 4, 2024

Random discovery: wrangler d1 migrations apply --remote doesn't fail when referencing a database that was created on another account..

@jkomyno
Copy link
Contributor Author

jkomyno commented Jun 4, 2024

Cloudflare Pages is up: https://f0902f19.d1-cfpages-nuxt.pages.dev/api

@janpio
Copy link
Contributor

janpio commented Jun 4, 2024

API endpoint currently returns

500
Cannot read properties of undefined (reading 'exec')

@jkomyno jkomyno self-assigned this Jun 6, 2024
@Jolg42
Copy link
Contributor

Jolg42 commented Jun 6, 2024

So the custom output step is failing and I found that when the Prisma Client is imported from a custom location files are missing from the build.

What is expected

nuxt build

Nuxt 3.11.2 with Nitro 2.9.6                                                                                         5:06:41 PM
ℹ Building client...                                                                                                5:06:43 PM
ℹ vite v5.2.12 building for production...                                                                           5:06:43 PM
ℹ ✓ 107 modules transformed.                                                                                        5:06:43 PM
ℹ .nuxt/dist/client/manifest.json                   1.87 kB │ gzip:  0.39 kB                                        5:06:43 PM
ℹ .nuxt/dist/client/_nuxt/error-500.BY691cIp.css    1.88 kB │ gzip:  0.72 kB                                        5:06:43 PM
ℹ .nuxt/dist/client/_nuxt/error-404.Cs7Z0ZwI.css    3.56 kB │ gzip:  1.10 kB                                        5:06:43 PM
ℹ .nuxt/dist/client/_nuxt/entry.DYp2-o9r.css       12.40 kB │ gzip:  2.56 kB                                        5:06:43 PM
ℹ .nuxt/dist/client/_nuxt/CNl_8ut0.js               2.74 kB │ gzip:  1.23 kB                                        5:06:43 PM
ℹ .nuxt/dist/client/_nuxt/DoW-bXWD.js               7.38 kB │ gzip:  3.09 kB                                        5:06:43 PM
ℹ .nuxt/dist/client/_nuxt/YGOUHMcm.js             209.49 kB │ gzip: 60.00 kB                                        5:06:43 PM
ℹ ✓ built in 703ms                                                                                                  5:06:43 PM
✔ Client built in 710ms                                                                                             5:06:43 PM
ℹ Building server...                                                                                                5:06:43 PM
ℹ vite v5.2.12 building SSR bundle for production...                                                                5:06:43 PM
ℹ ✓ 61 modules transformed.                                                                                         5:06:44 PM
ℹ .nuxt/dist/server/_nuxt/entry-styles.DCzG2Gh4.mjs             0.08 kB                                             5:06:44 PM
ℹ .nuxt/dist/server/_nuxt/error-500-styles.CxCcaIEE.mjs         0.08 kB                                             5:06:44 PM
ℹ .nuxt/dist/server/_nuxt/error-404-styles.CGceJTXr.mjs         0.08 kB                                             5:06:44 PM
ℹ .nuxt/dist/server/styles.mjs                                  1.55 kB                                             5:06:44 PM
ℹ .nuxt/dist/server/_nuxt/error-500-styles-1.mjs-seeEwM8D.js    2.10 kB │ map:   0.12 kB                            5:06:44 PM
ℹ .nuxt/dist/server/_nuxt/error-404-styles-1.mjs-DKAPqvyK.js    3.80 kB │ map:   0.12 kB                            5:06:44 PM
ℹ .nuxt/dist/server/_nuxt/error-500-BbOS9YtB.js                 4.01 kB │ map:   4.65 kB                            5:06:44 PM
ℹ .nuxt/dist/server/_nuxt/multipart-parser-BaDqkqCr.js          7.33 kB │ map:  10.89 kB                            5:06:44 PM
ℹ .nuxt/dist/server/_nuxt/error-404-B4eT6sIs.js                11.71 kB │ map:  23.16 kB                            5:06:44 PM
ℹ .nuxt/dist/server/_nuxt/entry-styles-1.mjs-BoX6ESXr.js       12.65 kB │ map:   0.11 kB                            5:06:44 PM
ℹ .nuxt/dist/server/server.mjs                                306.13 kB │ map: 464.15 kB                            5:06:44 PM
ℹ ✓ built in 466ms                                                                                                  5:06:44 PM
✔ Server built in 470ms                                                                                             5:06:44 PM
✔ Generated public dist                                                                                       nitro 5:06:44 PM
ℹ Building Nuxt Nitro server (preset: cloudflare-pages)                                                       nitro 5:06:44 PM
✔ Nuxt Nitro server built                                                                                     nitro 5:06:47 PM
  ├─ dist/_worker.js/chunks/_/error-500.mjs (4.82 kB) (2.05 kB gzip)
  ├─ dist/_worker.js/chunks/_/error-500.mjs.map (358 B) (227 B gzip)
  ├─ dist/_worker.js/chunks/_/query_engine_bg.mjs (164 B) (157 B gzip)
  ├─ dist/_worker.js/chunks/_/query_engine_bg.mjs.map (102 B) (103 B gzip)
  ├─ dist/_worker.js/chunks/_/wasm-edge-light-loader.mjs (114 B) (127 B gzip)
  ├─ dist/_worker.js/chunks/_/wasm-edge-light-loader.mjs.map (299 B) (207 B gzip)
  ├─ dist/_worker.js/chunks/build/client.manifest.mjs (2.08 kB) (496 B gzip)
  ├─ dist/_worker.js/chunks/build/client.manifest.mjs.map (931 B) (402 B gzip)
  ├─ dist/_worker.js/chunks/build/entry-styles.DCzG2Gh4.mjs (12.5 kB) (2.62 kB gzip)
  ├─ dist/_worker.js/chunks/build/entry-styles.DCzG2Gh4.mjs.map (283 B) (183 B gzip)
  ├─ dist/_worker.js/chunks/build/error-404-B4eT6sIs.mjs (6.37 kB) (2.57 kB gzip)
  ├─ dist/_worker.js/chunks/build/error-404-B4eT6sIs.mjs.map (5.59 kB) (2.48 kB gzip)
  ├─ dist/_worker.js/chunks/build/error-404-styles.CGceJTXr.mjs (3.68 kB) (1.18 kB gzip)
  ├─ dist/_worker.js/chunks/build/error-404-styles.CGceJTXr.mjs.map (298 B) (189 B gzip)
  ├─ dist/_worker.js/chunks/build/error-500-BbOS9YtB.mjs (3.05 kB) (1.37 kB gzip)
  ├─ dist/_worker.js/chunks/build/error-500-BbOS9YtB.mjs.map (1.24 kB) (674 B gzip)
  ├─ dist/_worker.js/chunks/build/error-500-styles.CxCcaIEE.mjs (1.98 kB) (797 B gzip)
  ├─ dist/_worker.js/chunks/build/error-500-styles.CxCcaIEE.mjs.map (298 B) (187 B gzip)
  ├─ dist/_worker.js/chunks/build/multipart-parser-BaDqkqCr.mjs (4.7 kB) (2.02 kB gzip)
  ├─ dist/_worker.js/chunks/build/multipart-parser-BaDqkqCr.mjs.map (6.47 kB) (2.65 kB gzip)
  ├─ dist/_worker.js/chunks/build/server.mjs (246 kB) (59.7 kB gzip)
  ├─ dist/_worker.js/chunks/build/server.mjs.map (18.7 kB) (6.91 kB gzip)
  ├─ dist/_worker.js/chunks/build/styles.mjs (1.5 kB) (418 B gzip)
  ├─ dist/_worker.js/chunks/build/styles.mjs.map (513 B) (265 B gzip)
  ├─ dist/_worker.js/chunks/routes/api/hello.mjs (221 B) (202 B gzip)
  ├─ dist/_worker.js/chunks/routes/api/hello.mjs.map (375 B) (254 B gzip)
  ├─ dist/_worker.js/chunks/routes/index.mjs (143 kB) (45.3 kB gzip)
  ├─ dist/_worker.js/chunks/routes/index.mjs.map (19.3 kB) (7.71 kB gzip)
  ├─ dist/_worker.js/chunks/routes/renderer.mjs (104 kB) (35.3 kB gzip)
  ├─ dist/_worker.js/chunks/routes/renderer.mjs.map (23.3 kB) (7.97 kB gzip)
  ├─ dist/_worker.js/chunks/runtime.mjs (111 kB) (34.1 kB gzip)
  ├─ dist/_worker.js/chunks/runtime.mjs.map (21.9 kB) (7.29 kB gzip)
  ├─ dist/_worker.js/chunks/virtual/_commonjsHelpers.mjs (328 B) (228 B gzip)
  ├─ dist/_worker.js/chunks/virtual/_commonjsHelpers.mjs.map (103 B) (103 B gzip)
  ├─ dist/_worker.js/chunks/virtual/_virtual_spa-template.mjs (85 B) (99 B gzip)
  ├─ dist/_worker.js/chunks/virtual/_virtual_spa-template.mjs.map (108 B) (108 B gzip)
  ├─ dist/_worker.js/index.js (139 B) (144 B gzip)
  └─ dist/_worker.js/wasm/query_engine_bg-4e54076d1129ad07.wasm (2.01 MB) (780 kB gzip)
Σ Total size: 2.75 MB (1.01 MB gzip)
✔ You can preview this build using npx wrangler pages dev dist/                                               nitro 5:06:47 PM
✔ You can deploy this build using npx wrangler pages deploy dist/ 

But this is the output with output = "client" in the Prisma schema

nuxt build

Nuxt 3.11.2 with Nitro 2.9.6                                                                                         6:11:32 PM
ℹ Building client...                                                                                                6:11:32 PM
ℹ vite v5.2.12 building for production...                                                     6:11:32 PM
ℹ ✓ 108 modules transformed.                                                                  6:11:32 PM
ℹ .nuxt/dist/client/manifest.json                   1.87 kB │ gzip:  0.39 kB                  6:11:32 PM
ℹ .nuxt/dist/client/_nuxt/error-500.BY691cIp.css    1.88 kB │ gzip:  0.72 kB                  6:11:32 PM
ℹ .nuxt/dist/client/_nuxt/error-404.Cs7Z0ZwI.css    3.56 kB │ gzip:  1.10 kB                  6:11:32 PM
ℹ .nuxt/dist/client/_nuxt/entry.DYp2-o9r.css       12.40 kB │ gzip:  2.56 kB                  6:11:32 PM
ℹ .nuxt/dist/client/_nuxt/DBqxCcGf.js               2.74 kB │ gzip:  1.23 kB                  6:11:32 PM
ℹ .nuxt/dist/client/_nuxt/BgN78dzB.js               7.38 kB │ gzip:  3.08 kB                  6:11:32 PM
ℹ .nuxt/dist/client/_nuxt/BECv_x9J.js             218.29 kB │ gzip: 63.61 kB                  6:11:32 PM
ℹ ✓ built in 722ms                                                                            6:11:32 PM
✔ Client built in 733ms                                                                       6:11:32 PM
ℹ Building server...                                                                          6:11:32 PM
ℹ vite v5.2.12 building SSR bundle for production...                                          6:11:32 PM
ℹ ✓ 62 modules transformed.                                                                   6:11:33 PM
ℹ .nuxt/dist/server/_nuxt/entry-styles.DCzG2Gh4.mjs             0.08 kB                       6:11:33 PM
ℹ .nuxt/dist/server/_nuxt/error-404-styles.CGceJTXr.mjs         0.08 kB                       6:11:33 PM
ℹ .nuxt/dist/server/_nuxt/error-500-styles.CxCcaIEE.mjs         0.08 kB                       6:11:33 PM
ℹ .nuxt/dist/server/styles.mjs                                  1.55 kB                       6:11:33 PM
ℹ .nuxt/dist/server/_nuxt/error-500-styles-1.mjs-seeEwM8D.js    2.10 kB │ map:   0.12 kB      6:11:33 PM
ℹ .nuxt/dist/server/_nuxt/error-404-styles-1.mjs-DKAPqvyK.js    3.80 kB │ map:   0.12 kB      6:11:33 PM
ℹ .nuxt/dist/server/_nuxt/error-500-BbOS9YtB.js                 4.01 kB │ map:   4.65 kB      6:11:33 PM
ℹ .nuxt/dist/server/_nuxt/multipart-parser-BaDqkqCr.js          7.33 kB │ map:  10.89 kB      6:11:33 PM
ℹ .nuxt/dist/server/_nuxt/error-404-B4eT6sIs.js                11.71 kB │ map:  23.16 kB      6:11:33 PM
ℹ .nuxt/dist/server/_nuxt/entry-styles-1.mjs-BoX6ESXr.js       12.65 kB │ map:   0.11 kB      6:11:33 PM
ℹ .nuxt/dist/server/server.mjs                                306.35 kB │ map: 465.04 kB      6:11:33 PM
ℹ ✓ built in 490ms                                                                            6:11:33 PM
✔ Server built in 497ms                                                                       6:11:33 PM
✔ Generated public dist                                                                 nitro 6:11:33 PM
ℹ Building Nuxt Nitro server (preset: cloudflare-pages)                                 nitro 6:11:33 PM
✔ Nuxt Nitro server built                                                               nitro 6:11:36 PM
  ├─ dist/_worker.js/chunks/_/error-500.mjs (4.93 kB) (2.1 kB gzip)
  ├─ dist/_worker.js/chunks/_/error-500.mjs.map (385 B) (248 B gzip)
  ├─ dist/_worker.js/chunks/_/pathe.ff20891b.mjs (4.18 kB) (1.76 kB gzip)
  ├─ dist/_worker.js/chunks/_/pathe.ff20891b.mjs.map (1.32 kB) (687 B gzip)
  ├─ dist/_worker.js/chunks/build/client.manifest.mjs (2.21 kB) (550 B gzip)
  ├─ dist/_worker.js/chunks/build/client.manifest.mjs.map (992 B) (435 B gzip)
  ├─ dist/_worker.js/chunks/build/entry-styles.DCzG2Gh4.mjs (12.7 kB) (2.67 kB gzip)
  ├─ dist/_worker.js/chunks/build/entry-styles.DCzG2Gh4.mjs.map (346 B) (227 B gzip)
  ├─ dist/_worker.js/chunks/build/error-404-B4eT6sIs.mjs (6.5 kB) (2.62 kB gzip)
  ├─ dist/_worker.js/chunks/build/error-404-B4eT6sIs.mjs.map (5.59 kB) (2.48 kB gzip)
  ├─ dist/_worker.js/chunks/build/error-404-styles.CGceJTXr.mjs (3.83 kB) (1.24 kB gzip)
  ├─ dist/_worker.js/chunks/build/error-404-styles.CGceJTXr.mjs.map (361 B) (234 B gzip)
  ├─ dist/_worker.js/chunks/build/error-500-BbOS9YtB.mjs (3.19 kB) (1.41 kB gzip)
  ├─ dist/_worker.js/chunks/build/error-500-BbOS9YtB.mjs.map (1.24 kB) (673 B gzip)
  ├─ dist/_worker.js/chunks/build/error-500-styles.CxCcaIEE.mjs (2.13 kB) (851 B gzip)
  ├─ dist/_worker.js/chunks/build/error-500-styles.CxCcaIEE.mjs.map (361 B) (232 B gzip)
  ├─ dist/_worker.js/chunks/build/multipart-parser-BaDqkqCr.mjs (4.85 kB) (2.07 kB gzip)
  ├─ dist/_worker.js/chunks/build/multipart-parser-BaDqkqCr.mjs.map (6.47 kB) (2.65 kB gzip)
  ├─ dist/_worker.js/chunks/build/server.mjs (246 kB) (59.7 kB gzip)
  ├─ dist/_worker.js/chunks/build/server.mjs.map (18.5 kB) (6.82 kB gzip)
  ├─ dist/_worker.js/chunks/build/styles.mjs (1.62 kB) (468 B gzip)
  ├─ dist/_worker.js/chunks/build/styles.mjs.map (574 B) (295 B gzip)
  ├─ dist/_worker.js/chunks/routes/api/hello.mjs (345 B) (255 B gzip)
  ├─ dist/_worker.js/chunks/routes/api/hello.mjs.map (375 B) (254 B gzip)
  ├─ dist/_worker.js/chunks/routes/index.mjs (241 kB) (76 kB gzip)
  ├─ dist/_worker.js/chunks/routes/index.mjs.map (26.9 kB) (9.91 kB gzip)
  ├─ dist/_worker.js/chunks/routes/renderer.mjs (104 kB) (35.4 kB gzip)
  ├─ dist/_worker.js/chunks/routes/renderer.mjs.map (23.3 kB) (7.97 kB gzip)
  ├─ dist/_worker.js/chunks/runtime.mjs (113 kB) (34.6 kB gzip)
  ├─ dist/_worker.js/chunks/runtime.mjs.map (22.5 kB) (7.43 kB gzip)
  ├─ dist/_worker.js/chunks/virtual/_virtual_spa-template.mjs (235 B) (153 B gzip)
  ├─ dist/_worker.js/chunks/virtual/_virtual_spa-template.mjs.map (108 B) (108 B gzip)
  ├─ dist/_worker.js/index.js (249 B) (186 B gzip)
  └─ dist/_worker.js/timing.js (374 B) (231 B gzip)
Σ Total size: 860 kB (263 kB gzip)

This is only a problem when using output = "client" which is added by our script in the Prisma schema.

Locally, it can be reproduced with after running:

node "../../.github/scripts/convert-to-custom-output.mjs" .

Which also changes

import { Prisma, PrismaClient } from '@prisma/client'

to

import { Prisma, PrismaClient } from '../../prisma/client'

I found that the solution to this is to change

  • add "db": "link:prisma/client", to the package json
  • run pnpm i
  • change the import
import { Prisma, PrismaClient } from 'db'
  • and finally to update the config to avoid the Big integer literals are not available in the configured target environment ("es2019") error
import nitroCloudflareBindings from 'nitro-cloudflare-dev'

// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
  modules: [nitroCloudflareBindings],
  nitro: {
    preset: 'cloudflare-pages',
    experimental: {
      wasm: true,
    },
    esbuild: {
      options: {
        target: 'esnext',
      },
    },
  },
  devtools: { enabled: true },
})

@janpio
Copy link
Contributor

janpio commented Jun 6, 2024

Ohhhhh, the default output job was succeeding all the time!? D'oh.

@Jolg42
Copy link
Contributor

Jolg42 commented Jun 6, 2024

Note: I tried prisma/prisma#22827 (comment) along the way but it did not work

@Jolg42 Jolg42 merged commit 1cd6a3d into dev Jun 7, 2024
285 of 293 checks passed
@Jolg42 Jolg42 deleted the feat/nuxt-wasm branch June 7, 2024 14:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants