温馨提示×

Ubuntu Nodejs如何连接库

小樊
40
2026-08-22 04:56:23
栏目: 编程语言

在 Ubuntu 上用 Node.js 连接“库”,需要先明确你说的“库”是哪一种,常见有下面几类。我按最常见场景给你说明,并给出示例。


一、Node.js 连接 系统动态库(.so)

如果你指的是 C/C++ 动态库(如 libxxx.so,Node.js 通常通过 FFIC++ Addon 来连接。

方式 1:使用 ffi-napi(推荐,简单)

适合调用已有的 .so 库。

1️⃣ 安装依赖

sudo apt update
sudo apt install -y nodejs npm
sudo apt install -y libffi-dev

2️⃣ 初始化项目

mkdir demo && cd demo
npm init -y
npm install ffi-napi ref-napi

3️⃣ 示例:调用系统库 libm.so

const ffi = require('ffi-napi');
const ref = require('ref-napi');

const libm = ffi.Library('libm', {
  sqrt: ['double', ['double']]
});

console.log(libm.sqrt(9)); // 3

✅ 适合:已有 .so 库,不想写 C++
❌ 不适合:复杂对象、高性能场景


方式 2:使用 C++ Addon(Node-API / N-API)

适合高性能、复杂库。

npm install -g node-gyp
sudo apt install build-essential

然后写 .cc 文件并用 node-gyp 编译。


二、Node.js 连接 数据库(最常见)

如果你指的是数据库(MySQL / PostgreSQL / MongoDB 等):

1️⃣ MySQL

npm install mysql2
const mysql = require('mysql2/promise');

(async () => {
  const conn = await mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'test'
  });

  const [rows] = await conn.execute('SELECT 1 + 1 AS result');
  console.log(rows);
})();

2️⃣ PostgreSQL

npm install pg
const { Client } = require('pg');

const client = new Client({
  host: 'localhost',
  user: 'postgres',
  password: '123456',
  database: 'test'
});

await client.connect();
const res = await client.query('SELECT 1');
console.log(res.rows);

3️⃣ MongoDB

npm install mongodb
const { MongoClient } = require('mongodb');

const client = new MongoClient('mongodb://localhost:27017');
await client.connect();
const db = client.db('test');
const col = db.collection('users');
console.log(await col.find().toArray());

三、Node.js 使用 第三方库(npm 包)

如果你只是想“连接/使用库”:

npm install lodash
const _ = require('lodash');
console.log(_.chunk([1,2,3,4], 2));

四、常见 Ubuntu 问题排查

找不到库

ldconfig -p | grep libxxx

Node 版本太低

node -v

建议:

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

五、我可以进一步帮你

你可以直接告诉我:

  1. “库”是哪种?
    • .so 动态库?
    • MySQL / PostgreSQL / Redis?
    • C/C++ 库?
  2. 库的名字或路径
  3. 想实现什么功能

我可以给你 完整可运行的示例

0