Hen*_* VT 1 next.js prisma next-auth
我正在使用 Next.js、Next-Auth 和 Prisma 构建一个应用程序。我正在使用 API 路由作为后端代码。最近,我将电脑上的 Yarn 升级到了v3.1.1. 然后,我创建了一个.yarnrc.yml文件并设置了避免将此项目转换为 PnP 的nodeLinker选项。
当我运行开发服务器来处理我的应用程序时,当它尝试编译下一个身份验证 API 路由时,我遇到了此错误。更奇怪的是,通过 Vercel 部署时不会出现此问题;功能日志很好,并且按预期工作。"node-modules"
Error: ENOENT: no such file or directory, open 'C:\Users\htech\Desktop\code\consulting\.yarn\unplugged\@prisma-client-virtual-d7adb716b6\node_modules\.prisma\client\schema.prisma'
Run Code Online (Sandbox Code Playgroud)
当我搜索类似问题时,通常出现的解决方案是在schema.prisma. 当我添加自定义输出路径并相应更新导入时,它只会抛出一些深奥的内部依赖错误。
error - ./prisma/generated/runtime/index.js:27652:17
Module not found: Can't resolve '_http_common'
27650 | "../../node_modules/.pnpm/undici@3.3.6/node_modules/undici/lib/node/http-parser.js"(exports2, module2) {
27651 | "use strict";
> 27652 | var common = require("_http_common");
Run Code Online (Sandbox Code Playgroud)
yarn:v3.1.1next:v12.1.0@prisma/client:v3.10.0prisma:v3.10.0next-auth:v4.2.1这似乎是一个简单的问题,即它的生成位置。但是,我不知道如何解决这个问题,除非回滚我的系统范围的纱线版本。我遇到错误了吗?有没有人有办法解决吗?
在测试了许多不同的东西之后,我相信我已经找到了解决方案。
问题在于 Yarn 如何解决导入问题。Prisma CLI 生成客户端(默认情况下)到node_modules/.prisma. 即使nodeLinker设置为node-modules,Yarn 也会尝试将此导入解析为.yarn/unplugged/<folder-name>,其中生成的客户端不存在。
为了解决此分辨率问题,我们必须为.prisma文件夹创建自定义分辨率。这假设您没有自定义输出路径。
# .yarnrc.yml
nodeLinker: node-modules
packageExtensions:
"@prisma/client@*":
dependencies:
".prisma": 'link:See "resolution" field of package.json'
Run Code Online (Sandbox Code Playgroud)
# package.json
{
...
"resolutions": {
".prisma": "link:node-modules/.prisma"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3511 次 |
| 最近记录: |