Blizzard / node-rdkafka

Node.js bindings for librdkafka
MIT License
2.1k stars 390 forks source link

node_modules/node-rdkafka/build/Release/node-librdkafka.node: invalid ELF header #1023

Closed fberrez closed 1 year ago

fberrez commented 1 year ago

Environment Information

Steps to Reproduce

In a project that uses node-rdkafka, I got this issue when I run it in a docker container:

test  |
test  | > test@1.0.0 start
test  | > node index.js
test  |
test  | /usr/src/app/node_modules/bindings/bindings.js:121
test  |         throw e;
test  |         ^
test  |
test  | Error: /usr/src/app/node_modules/node-rdkafka/build/Release/node-librdkafka.node: invalid ELF header
test  |     at Module._extensions..node (node:internal/modules/cjs/loader:1338:18)
test  |     at Module.load (node:internal/modules/cjs/loader:1117:32)
test  |     at Module._load (node:internal/modules/cjs/loader:958:12)
test  |     at Module.require (node:internal/modules/cjs/loader:1141:19)
test  |     at require (node:internal/modules/cjs/helpers:110:18)
test  |     at bindings (/usr/src/app/node_modules/bindings/bindings.js:112:48)
test  |     at Object.<anonymous> (/usr/src/app/node_modules/node-rdkafka/librdkafka.js:10:32)
test  |     at Module._compile (node:internal/modules/cjs/loader:1254:14)
test  |     at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
test  |     at Module.load (node:internal/modules/cjs/loader:1117:32) {
test  |   code: 'ERR_DLOPEN_FAILED'
test  | }
test  |
test  | Node.js v18.16.0
test exited with code 1

So I tried to make a simpler project that only import node-rdkafka. Here is the files: https://github.com/fberrez/bug-node-rdkafka

When I run it locally, I have:

$ npm start

> test-kafka@1.0.0 start
> node index.js

[
  'gzip',       'snappy',
  'sasl',       'regex',
  'lz4',        'sasl_gssapi',
  'sasl_plain', 'plugins',
  'http'
]

But it doesn't work in the container and the error I wrote above occurs.

fberrez commented 1 year ago

Finally got the problem, I was installing modules on a macos while the image runs on linux.