我真的不熟悉 docker,但我正在使用 docker 运行一个网络应用程序,该应用程序使用 prisma/nexus
当我尝试撰写时,出现以下错误:
Error: Unknown binaryTarget linux-arm-openssl-undefined and no custom binaries were provided
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我这个错误是什么意思,我该如何解决它?我认为这与 docker 不支持我正在开发的操作系统有关,但我不完全确定。
Ale*_*tov 12
未定义意味着您没有在容器中安装 openssl。您可以通过安装 openssl 来获取正确的二进制目标名称。将其添加到 Dockerfile 中:
FROM node:16-slim
RUN apt-get update
RUN apt-get install -y openssl
Run Code Online (Sandbox Code Playgroud)
从这里回答https://github.com/prisma/prisma/issues/861#issuecomment-881992292
Fla*_*ken 10
从官方文档来看,
\n\n\nPrisma 客户端由三个主要组件组成。
\n\n
\n- JavaScript 客户端库
\n- TypeScript 类型定义
\n- 查询引擎(二进制文件形式)
\n
虽然生成的代码是跨平台的(这是 javascript),但事实query engine并非如此。
当您运行该prisma generate命令时,prisma 似乎使用query engine,但它需要为当前平台找到正确的二进制文件,否则会抛出错误。
问题是由于某种原因我无法解释(因为我遇到了同样的问题)docker 中的平台不被识别为受支持的平台。
\n我的猜测是,要么 docker 提供了错误的平台,要么 prisma 在某个时候存在错误,其中的错误消息linux-arm-openssl-undefined 可能undefined是问题的线索。
解决方案: 现在:我计划在 x86 计算机上运行我的图像,以便解决此问题。最新的 docker 3 RC2(5 天前发布)也没有帮助。
\n请注意,您可以在文件中指定binaryTargets schema.prisma。
generator client {\n provider = "prisma-client-js"\n binaryTargets = ["debian-openssl-1.1.x"]\n}\nRun Code Online (Sandbox Code Playgroud)\n但由于某种原因,即使我在 debian 上构建 docker 镜像,这也不起作用。Prisma 似乎认识到我正在运行linux-arm,但无法将 binaryTarget 关联到。另外\xe2\x80\xa6 这个平台真的准确吗?docker 是在后台运行 linux arm 还是在 Rosetta 下运行 x86 debian ?我不知道。
[编辑]\n节点图像是多架构的,意味着
\nFROM node:15.12.0-buster-slim AS builder\nRun Code Online (Sandbox Code Playgroud)\n将为我的主机平台选择 Linux 架构 (linux/arm64/v8)\n看起来我们实际上可以根据这篇文章使用 buildx 实验功能在 m1 上构建 x86
\n| 归档时间: |
|
| 查看次数: |
8148 次 |
| 最近记录: |