[ERR_PACKAGE_PATH_NOT_EXPORTED]错误含义及DigitalOcean虚拟机运行问题排查
关于[ERR_PACKAGE_PATH_NOT_EXPORTED]错误的解析与修复
问题场景
在DigitalOcean虚拟机中运行http_server.js时触发[ERR_PACKAGE_PATH_NOT_EXPORTED]错误,相关代码及依赖配置如下:
http_server.js代码
// Import required modules import express from 'express'; import lowdb from "lowdb"; import adapters from "lowdb/adapters"; import { FileSync } from "lowdb/adapters"; import cors from 'cors'; import { faker } from '@faker-js/faker'; const app = express(); const adapter = new FileSync('db.json'); const db = low(adapter); // allow cross-origin resource sharing (CORS) app.use(cors()); // data parser - used to parse post data app.use(express.urlencoded({ extended: false })); app.use(express.json()); // serve static files from public directory app.use(express.static('public')); // init the data store db.defaults({ users: [] }).write(); // return all users app.get('/data', function(req, res) { res.send(db.get('users').value()); }); // add user app.post('/add', function(req, res) { var user = { name: req.body.name, dob: req.body.dob, email: req.body.email, username: req.body.username, password: req.body.password, phone: req.body.phone, streetaddress: req.body.streetaddress, citystatezip: req.body.citystatezip, latitude: req.body.latitude, longitude: req.body.longitude, avatar: faker.internet.avatar() }; db.get('users').push(user).write(); console.log(db.get('users').value()); res.send(db.get('users').value()); }); // start server app.listen(3001, function() { console.log('Running on port 3001!'); });
package.json依赖配置
{ "name": "sample", "version": "1.0.0", "description": "vm app", "main": "index.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "saro", "license": "MIT", "dependencies": { "cors": "^2.8.5", "express": "^4.18.2", "FileSync": "^1.0.1", "lowdb": "^6.0.1", "lowdb-adapter": "^0.1.3", "node-fetch": "^2.6.1" } }
错误本质与具体原因
[ERR_PACKAGE_PATH_NOT_EXPORTED]错误核心是代码尝试导入的模块路径未被目标包的导出配置允许,当前场景下的具体诱因:
lowdb v6导入路径错误:lowdb从v5版本起调整了导出结构,不再支持
lowdb/adapters这类子路径导入,你代码中import adapters from "lowdb/adapters";和import { FileSync } from "lowdb/adapters";属于无效路径,这是触发错误的直接原因。冗余依赖干扰解析:你额外安装的
FileSync和lowdb-adapter并非lowdb官方所需依赖,lowdb v6已内置FileSync适配器,这两个冗余包会干扰Node.js的模块解析逻辑。
修复步骤
- 修正lowdb导入代码:将http_server.js中lowdb相关导入替换为v6的正确写法:
// 替换原lowdb相关导入 import { low } from 'lowdb'; import { FileSync } from 'lowdb/node';
初始化代码无需修改,保持原逻辑即可。
- 清理无用依赖:修改package.json的
dependencies字段,删除FileSync和lowdb-adapter,同时补充代码中用到但未声明的@faker-js/faker依赖:
"dependencies": { "cors": "^2.8.5", "express": "^4.18.2", "lowdb": "^6.0.1", "node-fetch": "^2.6.1", "@faker-js/faker": "^8.0.0" }
- 重新安装依赖:在项目目录执行命令:
npm install
- 验证运行:启动服务器确认错误消除:
node http_server.js
内容的提问来源于stack exchange,提问作者Sar
相关产品推荐
相关产品推荐

