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

时间:2019-02-07 03:16:30

标签: node.js docker npm node-gyp

我已经建立了一个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 个答案:

答案 0 :(得分:1)

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

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

希望获得帮助