解决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
相关推荐
初遇你时动了情3 分钟前
不用每个请求都写获取请求 类似无感刷新逻辑 uniapp vue3 react实现方案
javascript·react.js·uni-app
27669582926 分钟前
京东最新滑块 分析
linux·前端·javascript·h5st·京东滑块·京东m端滑块·京东逆向
拖拉斯旋风10 分钟前
🧠 `useRef`:React 中“默默记住状态却不打扰 UI”的利器
前端·javascript·react.js
POLITE311 分钟前
Leetcode 3.无重复字符的最长子串 JavaScript (Day 4)
javascript·算法·leetcode
kuilaurence15 分钟前
Node.js 中使用env文件
javascript
DongHao17 分钟前
跨域问题及解决方案
前端·javascript·面试
持续升级打怪中19 分钟前
Vue项目中Axios全面封装实战指南
前端·javascript·vue.js
a177988771223 分钟前
print.js打印
前端·javascript·html
Sport25 分钟前
用全会,问全废:CSS高频面试题
前端·javascript·面试
Maxkim27 分钟前
「✍️JS原子笔记 」零基础吃透 Proxy 数据响应式
前端·javascript·面试