Error: Module did not self-register: '/node_modules/onnxruntime-node/bin/napi-v3/linux/x64/onnxruntime_binding.node'
System Info
@xenova/transformers": "^2.15.0", node js, Ubuntu 20.04 LTS
Environment/Platform
- [ ] Website/web-app
- [ ] Browser extension
- [X] Server-side (e.g., Node.js, Deno, Bun)
- [ ] Desktop app (e.g., Electron)
- [ ] Other (e.g., VSCode extension)
Description
Facing issue for me when using transformer js as
const TransformersApi = Function('return import("@xenova/transformers")')();
const { CLIPVisionModelWithProjection, RawImage, AutoProcessor } = await TransformersApi;
Its working fine when request comes to my application for the first time. I am executing this code as a worker in node js application. But when next request comes to my application its giving error for me as
Error: Module did not self-register: '/server/node_modules/onnxruntime-node/bin/napi-v3/linux/x64/onnxruntime_binding.node'. at Module._extensions..node (/server/lib/internal/modules/cjs/loader.js:1340:18) at Module.load (/home/server/lib/internal/modules/cjs/loader.js:1119:32) at Module._load (/home/server/lib/internal/modules/cjs/loader.js:960:12) at Module.require (/home/server/lib/internal/modules/cjs/loader.js:1143:19) at require (/home/server/lib/internal/modules/cjs/helpers.js:110:18) at Object.<anonymous> (/home/server/node_modules/onnxruntime-node/dist/binding.js:9:1) at Module._compile (/home/server/lib/internal/modules/cjs/loader.js:1256:14) at Module._extensions..js (/home/server/lib/internal/modules/cjs/loader.js:1310:10) at Module.load (/home/server/lib/internal/modules/cjs/loader.js:1119:32) at Module._load (node:internal/modules/cjs/loader:960:12) {code: 'ERR_DLOPEN_FAILED', stack: 'Error: Module did not self-register: '/home/r…oad (node:internal/modules/cjs/loader:960:12)', message: 'Module did not self-register: '/home/…napi-v3/linux/x64/onnxruntime_binding.node'.'}
How to resolve this issue ?
Giving stackoverflow link post https://stackoverflow.com/q/78178187/2853298
Reproduction
const TransformersApi = Function('return import("@xenova/transformers")')();
const { CLIPVisionModelWithProjection, RawImage, AutoProcessor } = await TransformersApi;
const { parentPort, workerData } = require("worker_threads");
const TransformersApi = Function('return import("@xenova/transformers")')();
async function createVectors() {
try {
const { CLIPVisionModelWithProjection, RawImage, AutoProcessor } = await TransformersApi;
const imageProcessor = await AutoProcessor.from_pretrained('Xenova/clip-vit-base-patch16');
const visionModel = await CLIPVisionModelWithProjection.from_pretrained('Xenova/clip-vit-base-patch16');
const { TGApiMessageList } = workerData;
console.log("=======workerData======", workerData);
// get image embedding:
for (var i = 0; i < TGApiMessageList.length; i++) {
let image = await RawImage.fromBlob(TGApiMessageList[i].imageBlob);
let imageInputs = await imageProcessor(image);
let { image_embeds } = await visionModel(imageInputs);
TGApiMessageList[i]["imageEmbed"] = image_embeds.data;
console.log('-------Vector Embeddings-------');
console.log(TGApiMessageList[i]["imageEmbed"]);
}
// sending message back to the main thread
parentPort.postMessage({ done: true, TGApiMessageList: TGApiMessageList });
} catch (error) {
console.log(error);
}
}
createVectors();`
```
This is the complete worker file I am using to create vectors.
https://stackoverflow.com/questions/78178187/error-module-did-not-self-register-node-modules-onnxruntime-node-bin-napi-v3/78247951#78247951