node-gyp 针对错误的 NODE_MODULE_VERSION 进行编译

Posted

技术标签:

【中文标题】node-gyp 针对错误的 NODE_MODULE_VERSION 进行编译【英文标题】:node-gyp compiling against wrong NODE_MODULE_VERSION 【发布时间】:2019-07-01 02:57:51 【问题描述】:

我已经建立了一个 Gitlab CI 管道,它在第一阶段编译原生 nodejs 插件,并在第二阶段运行一些测试。 该作业在同一个 Docker 映像上运行:

FROM ubuntu:18.04
RUN apt update
RUN apt install -y git cmake gcc build-essential nodejs npm curl
RUN npm i -g n
RUN n latest
RUN npm i -g node-gyp
RUN npm i -g yarn

虽然两个阶段都在同一个 docker 映像上运行,但在运行测试时我收到以下错误消息:

Error: The module '<path_to_module>'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 64. This version of Node.js requires
NODE_MODULE_VERSION 57.

即使以当前 nodejs 版本的形式为 node-gyp 提供所需的目标也不会改变这一点:

node-gyp configure --target=$(node --version)
node-gyp build --target=$(node --version)

降级nodejs版本使错误消失: 在 Dockerfile 中:

RUN n 8.15.0

如何针对 LTS 版本的 nodejs(当前为 10.15.1)编译我的原生插件

【问题讨论】:

这个有什么答案吗? 我也需要答案 【参考方案1】:

也许编译没有完成,因为和现有的模块。尝试使用重新构建然后清理旧模块。

node-gyp configure --target=$(node --version)
node-gyp rebuild
node-gyp clean

希望有帮助

【讨论】:

以上是关于node-gyp 针对错误的 NODE_MODULE_VERSION 进行编译的主要内容,如果未能解决你的问题,请参考以下文章

NPM/node-gyp 错误

node-gyp 构建错误窗口 x64

Heroku:错误:找不到模块 node-gyp

如何解决纱线构建错误 - 错误:ENOTEMPTY: directory not empty, rmdir '/frontend/out/node_modules/cacache/node_modul

节点 10 - npm 安装期间的“node-gyp 重建”错误

为 npm 整数安装 node-gyp 错误