使用 Yarn 1 编译画布时出现“node-pre-gyp:未找到”

Posted

技术标签:

【中文标题】使用 Yarn 1 编译画布时出现“node-pre-gyp:未找到”【英文标题】:"node-pre-gyp: not found" when compiling canvas with Yarn 1 【发布时间】:2021-12-17 12:32:33 【问题描述】:

我在我的 VPS 服务器上更改了 Next.js 应用程序的路径,现在我的依赖项无法使用 Yarn 正确安装。 (我使用的是 Yarn 1,而不是 Yarn 2。)

Yarn 在尝试为 npm 模块 canvas 构建本机代码时崩溃,说:node-pre-gyp: not found

为什么会这样?

【问题讨论】:

【参考方案1】:

事实证明,应用程序的新路径在其中一个文件夹名称中有一个冒号 :。 (该文件夹以 ISO 时间戳命名,例如 2021-11-03T02:02:44,以表示此应用版本的构建时间。)

在大多数系统中,冒号是用于查找可执行文件的特殊字符:PATH 变量通常用冒号分隔。

我怀疑 Yarn 1 有一个错误,它将文件夹名称插入 PATH 而不转义任何冒号,这导致 PATH 解析不正确。这会导致系统查找两个不正确的文件夹名称,而不是一个正确的文件夹名称,以查找像 node-pre-gyp 这样的可执行文件,它需要构建像 canvas 这样的特殊本机代码依赖项。

要解决此问题,请停止在包含 Node 应用程序的文件夹名称中使用冒号,在这些应用程序中您依赖 Yarn 1 来编译本机代码。将文件夹重命名为其他名称。

【讨论】:

以上是关于使用 Yarn 1 编译画布时出现“node-pre-gyp:未找到”的主要内容,如果未能解决你的问题,请参考以下文章

在 YARN 集群上部署 pyspark 作业时出现 FileNotFoundException

使用 YARN 在集群模式下运行 spark 时出现 java.io.FileNotFoundException

Github 操作,使用 npm 或 yarn 安装 Github 包时出现 401 未授权

在远程 Yarn 集群上使用 spark 从 S3 访问文件时出现问题

yarn 创建react项目时出现错误

在 Firefox 中的画布上下文对象上使用 svg 调用 drawImage() 时出现问题