notiz-dev / nestjs-prisma

Easy Prisma support for your NestJS application
https://nestjs-prisma.dev
MIT License
587 stars 50 forks source link

Error: "beforeExit" hook is not applicable to the library engine since Prisma 5.0.0, it is only relevant and implemented for the binary engine. Please add your event listener to the `process` object directly instead. #68

Closed yangricardo closed 1 year ago

yangricardo commented 1 year ago

Today i tried to use this with new Prisma 5.0.0 and i noticed this error:

Error: "beforeExit" hook is not applicable to the library engine since Prisma 5.0.0, it is only relevant and implemented for the binary engine. Please add your event listener to the `process` object directly instead.
    at _t.on (/home/user/api/node_modules/@prisma/client/runtime/library.js:103:1990)
    at Proxy.$on (/home/user/api/node_modules/@prisma/client/runtime/library.js:126:5397)
    at Proxy.enableShutdownHooks (/home/user/api/node_modules/nestjs-prisma/lib/prisma.service.ts:42:10)
    at bootstrap (/home/user/api/src/main.ts:13:23)
which points to `main::bootstrap` function:
  // enable shutdown hook
  const prismaService: PrismaService = app.get(PrismaService);
  await prismaService.enableShutdownHooks(app);
yangricardo commented 1 year ago

https://www.prisma.io/docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-5#removal-of-the-beforeexit-hook-from-the-library-engine

Today i tried to use this with new Prisma 5.0.0 and i noticed this error:

Error: "beforeExit" hook is not applicable to the library engine since Prisma 5.0.0, it is only relevant and implemented for the binary engine. Please add your event listener to the `process` object directly instead.
    at _t.on (/home/user/api/node_modules/@prisma/client/runtime/library.js:103:1990)
    at Proxy.$on (/home/user/api/node_modules/@prisma/client/runtime/library.js:126:5397)
    at Proxy.enableShutdownHooks (/home/user/api/node_modules/nestjs-prisma/lib/prisma.service.ts:42:10)
    at bootstrap (/home/user/api/src/main.ts:13:23)
which points to `main::bootstrap` function:
  // enable shutdown hook
  const prismaService: PrismaService = app.get(PrismaService);
  await prismaService.enableShutdownHooks(app);
sangdth commented 1 year ago

We faced problem when upgrading to version 5 too. Hope that we could have a new release soon. 🙏🏻

recursive-beast commented 1 year ago

Same problem, should update peer deps as well.

yangricardo commented 1 year ago

I commented the enableShutdownHooks code block and worked to make this work, but not sure if prisma 5.0.0 still needs it with Nestjs.

sangdth commented 1 year ago

In my case I use turborepo, and I moved the prisma out into separated package, after upgrading for some reason I don't know, it still tries to find the old version. I'm not sure it's because of turborepo cache or because nestjs-prisma forces it to use older version.

Error: Cannot find module '.prisma/client/index'
Require stack:
- /app/node_modules/.pnpm/@prisma+client@4.16.2_prisma@4.16.2/node_modules/@prisma/client/index.js
- /app/node_modules/.pnpm/nestjs-prisma@0.21.0_@nestjs+common@10.0.5_@prisma+client@4.16.2_prisma@4.16.2/node_modules/nestjs-prisma/dist/prisma.service.js
- /app/node_modules/.pnpm/nestjs-prisma@0.21.0_@nestjs+common@10.0.5_@prisma+client@4.16.2_prisma@4.16.2/node_modules/nestjs-prisma/dist/prisma.module.js
- /app/node_modules/.pnpm/nestjs-prisma@0.21.0_@nestjs+common@10.0.5_@prisma+client@4.16.2_prisma@4.16.2/node_modules/nestjs-prisma/dist/index.js
- /app/apps/server/dist/main.js
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:985:15)
at Function.Module._load (node:internal/modules/cjs/loader:833:27)
at Module.require (node:internal/modules/cjs/loader:1057:19)
at require (node:internal/modules/cjs/helpers:103:18)
at Object.<anonymous> (/app/node_modules/.pnpm/@prisma+client@4.16.2_prisma@4.16.2/node_modules/@prisma/client/index.js:2:6)
at Module._compile (node:internal/modules/cjs/loader:1155:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1209:10)
at Module.load (node:internal/modules/cjs/loader:1033:32)
at Function.Module._load (node:internal/modules/cjs/loader:868:12)
at Module.require (node:internal/modules/cjs/loader:1057:19) {
code: 'MODULE_NOT_FOUND',
yangricardo commented 1 year ago

@sangdth . I noticed something similar when you have some turborepo internal package or app that have in it's package.json a diferent version of some package, in your case @prisma/client, verify in your project for conflicted dependency versions and try to keep them in the same version manually or creating a "config" package that you refers alongside your packages. If it not works, clean the generated dist, build, node_modules and lock files from package manager

In my case I use turborepo, and I moved the prisma out into separated package, after upgrading for some reason I don't know, it still tries to find the old version. I'm not sure it's because of turborepo cache or because nestjs-prisma forces it to use older version.

Error: Cannot find module '.prisma/client/index'
Require stack:
- /app/node_modules/.pnpm/@prisma+client@4.16.2_prisma@4.16.2/node_modules/@prisma/client/index.js
- /app/node_modules/.pnpm/nestjs-prisma@0.21.0_@nestjs+common@10.0.5_@prisma+client@4.16.2_prisma@4.16.2/node_modules/nestjs-prisma/dist/prisma.service.js
- /app/node_modules/.pnpm/nestjs-prisma@0.21.0_@nestjs+common@10.0.5_@prisma+client@4.16.2_prisma@4.16.2/node_modules/nestjs-prisma/dist/prisma.module.js
- /app/node_modules/.pnpm/nestjs-prisma@0.21.0_@nestjs+common@10.0.5_@prisma+client@4.16.2_prisma@4.16.2/node_modules/nestjs-prisma/dist/index.js
- /app/apps/server/dist/main.js
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:985:15)
at Function.Module._load (node:internal/modules/cjs/loader:833:27)
at Module.require (node:internal/modules/cjs/loader:1057:19)
at require (node:internal/modules/cjs/helpers:103:18)
at Object.<anonymous> (/app/node_modules/.pnpm/@prisma+client@4.16.2_prisma@4.16.2/node_modules/@prisma/client/index.js:2:6)
at Module._compile (node:internal/modules/cjs/loader:1155:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1209:10)
at Module.load (node:internal/modules/cjs/loader:1033:32)
at Function.Module._load (node:internal/modules/cjs/loader:868:12)
at Module.require (node:internal/modules/cjs/loader:1057:19) {
code: 'MODULE_NOT_FOUND',
marcjulian commented 1 year ago

await prismaService.enableShutdownHooks(app); is not needed any more, since Prisma v3. Read the comments and docs update for nestjs Prisma receipe

I will remove it and provide a new version with support for Prisma v5.

marcjulian commented 1 year ago

Please try out the latest dev release 0.22.0-dev.0

npm i nestjs-prisma@0.22.0-dev.0