解决npm run start 和 node.js src/main.js 引用资源文件路径不一致问题
问题描述
- 写了一个node.js连接sqlite3数据库的项目,因为数据库sqlite3.db文件相对于根目录和src/main.js路径不一致,打包时总有一种方法失败
分析原因
- 数据库sqlite3.db文件是相对控制台运行命令的相对路径
- npm run start 的相对路径是根目录/,
- src/main.js 的相对路径是根目录/src目录
- 即使你在package.json 配置了main.js的相对路径,数据库sqlite3.db相对于控制台的路径会发生改变,所以应该修改为相对于当前文件的路径,当前文件的绝对路径不会发生改变
JSON
{
"main": "./src/main.js",
"scripts": {
"start": "node src/main.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"sqlite3": "^5.1.7"
}
}
解决方法
- 将数据库sqlite3.db的路径修改为相对于当前目录下的sqlite3.db路径
JavaScript
// 打开/创建数据库
//let db = new sqlite3.Database('nav.db');
修改为
JavaScript
// 显示当前文件的绝对路径
//console.log(__dirname)
// 解决npm和node运行时,数据库路径不一致问题
const databasePath = path.join(__dirname, '', 'nav.db')
let db = new sqlite3.Database(databasePath)
测试
- 使用命令行测试结果一致
控制台
npm run start
或者
控制台
node src/main.js
或者
控制台
cd src
node main.js