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 进行编译的主要内容,如果未能解决你的问题,请参考以下文章
如何解决纱线构建错误 - 错误:ENOTEMPTY: directory not empty, rmdir '/frontend/out/node_modules/cacache/node_modul