Node.js中tfjs-node报ERR_DLOPEN_FAILED错误及替代方案咨询
Node.js中使用tfjs-node遇ERR_DLOPEN_FAILED错误的解决及替代方案
我在Node.js服务器中尝试使用tfjs-node,写入导入语句时出现ERR_DLOPEN_FAILED错误。相关代码及package.json依赖如下:
// 导入语句 import express from "express"; import pool from "../config/pgConfig.cjs"; import path from "path"; import * as tf from "@tensorflow/tfjs-node";
// package.json 依赖 { "dependencies": { "@braintree/sanitize-url": "^7.0.0", "@mediapipe/face_detection": "^0.4.1646425229", "@supabase/supabase-js": "^2.39.7", "@tanstack/react-table": "^8.11.2", "@tensorflow-models/blazeface": "^0.1.0", "@tensorflow-models/face-detection": "^1.0.2", "@tensorflow/tfjs": "^4.17.0", "@tensorflow/tfjs-backend-webgl": "^4.17.0", "@tensorflow/tfjs-converter": "^4.17.0", "@tensorflow/tfjs-core": "^4.17.0", "@tensorflow/tfjs-node": "^4.17.0", "@tensorflow/tfjs-node-gpu": "^4.17.0", "bcrypt": "^5.1.1", "bcryptjs": "^2.4.3", "body-parser": "^1.20.2", "compression": "^1.7.4", "cookie-parser": "^1.4.6", "cors": "^2.8.5", "dotenv": "^16.3.1", "easy-waf": "^0.5.2", "express": "^4.18.2", "express-fileupload": "^1.4.3", "express-rate-limit": "^7.1.5", "express-session": "^1.17.3", "helmet": "^7.1.0", "jsonwebtoken": "^9.0.2", "multer": "^1.4.5-lts.1", "nodemon": "^3.0.2", "passport": "^0.7.0", "passport-local": "^1.0.0", "passport-local-mongoose": "^8.0.0", "perfect-express-sanitizer": "^1.0.13", "permissions-policy": "^0.6.0", "pg": "^8.11.3", "python-shell": "^5.0.0", "rate-limiter-flexible": "^4.0.0", "redis": "^4.6.13", "spdy": "^4.0.2", "tiny-csrf": "^1.1.3", "uuidv4": "^6.2.13", "winston": "^3.11.0" } }
我已尝试以下操作,但问题仍未解决:
- 更新npm
- 删除node_modules后重新执行
npm install - 安装bcrypt
一、解决tfjs-node的ERR_DLOPEN_FAILED错误
这个错误大多是二进制文件兼容问题或系统依赖缺失导致,可按以下步骤排查:
- 核对Node.js版本:tfjs-node v4.17.0兼容Node.js 16.x、18.x、20.x版本,用
node -v查看当前版本,不兼容则用nvm等工具切换版本。 - 彻底清理重装:执行
npm cache clean --force,删除node_modules和package-lock.json,再重新运行npm install。 - 补全系统依赖:
- Linux:执行
sudo apt-get install build-essential安装基础编译库; - macOS:运行
xcode-select --install安装Xcode命令行工具; - Windows:以管理员身份执行
npm install --global windows-build-tools安装编译工具。
- Linux:执行
- 移除冲突依赖:你的package.json中同时安装了
@tensorflow/tfjs-node和@tensorflow/tfjs-node-gpu,二者不能共存,删除其中一个(无GPU环境则删gpu版)后重新安装。
二、后端运行TensorFlow模型的替代方案
如果tfjs-node始终无法正常工作,可考虑以下方案:
- 使用纯JS版本的TensorFlow.js:移除
@tensorflow/tfjs-node,仅保留@tensorflow/tfjs,导入后设置CPU后端:
无需编译二进制,兼容性强,仅性能略低于node版。import * as tf from '@tensorflow/tfjs'; tf.setBackend('cpu'); - Python TensorFlow服务+Node.js调用:用Python编写TensorFlow推理接口(比如FastAPI或Flask服务),Node.js通过HTTP请求或
python-shell调用该服务,适合高性能需求的复杂模型。 - ONNX Runtime:将TensorFlow模型转换为ONNX格式,使用
onnxruntime-node在Node.js中运行,兼容性和性能表现优异,支持多平台。
内容的提问来源于stack exchange,提问作者Kartic Joshi
相关产品推荐
相关产品推荐

