解决npm run start 和 node.js src/main.js 引用资源文件路径不一致问题

解决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
相关推荐
森林的尽头是阳光17 分钟前
tree回显问题
javascript·vue.js·elementui
weixin_BYSJ198738 分钟前
「课设设计」springboot校园超市助购系统26449 (附源码)
java·javascript·spring boot·python·django·flask·php
mfxcyh2 小时前
Vue3+Ant Design Vue 实现手动异步文件上传(含大小校验、弹窗上传)
前端·javascript·vue.js
meilindehuzi_a2 小时前
Vue3进阶基础:指令修饰符、v-model表单绑定、动态样式、计算属性与侦听器实战
前端·javascript·vue.js
csdn2015_2 小时前
vue 前端运行命令
前端·javascript·vue.js
Cobyte2 小时前
根据浏览器解析 HTML 的规范实现 HTML 解析器
前端·javascript·vue.js
默_笙3 小时前
😁 LLM 不知道的事它不会说"不知道",而是会"编"——RAG 就是让它闭嘴先查资料
前端·javascript
Revolution613 小时前
变量提升到底提升了什么:为什么 var 是 undefined,let 却直接报错
前端·javascript
labixiong3 小时前
ES2026 落地了什么?两个真上线的特性 + 两个被毙的,一次讲清楚
javascript·ecmascript 6·ecmascript 8
__zRainy__3 小时前
Node.js readline 全景指南:createInterface 配置、逐行读取与交互模式
node.js·readline