Node+Express项目中addbook.ts访问database.json的相对路径求解
路径填写方案
直接相对于当前文件的相对路径
如果是按照文件层级计算,addbook.ts存放在src/routes/api/下,database.json存放在src/下,需要向上回溯2级目录才能定位到目标文件,对应相对路径为../../database.json。
注意:Node.js 的
fs模块默认会将相对路径解析为执行 node 命令的工作目录的相对路径,而非当前文件的存放路径,只要你启动项目的终端目录发生变化,直接写上面的相对路径就会报错,因此更推荐用下面的绝对路径拼接写法。
推荐稳定写法
用 Node.js 内置变量拼接出目标文件的绝对路径,完全不受启动目录影响:
import { readFileSync } from 'fs'; import path from 'path'; // __dirname 是当前 addbook.ts 文件所在的目录绝对路径,即 src/routes/api const dbPath = path.join(__dirname, '../../database.json'); const data = readFileSync(dbPath, 'utf-8');
如果你的项目用的是 ESModule 规范,不支持__dirname,可以用下面的写法替换:
import { readFileSync } from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const dbPath = path.join(__dirname, '../../database.json'); const data = readFileSync(dbPath, 'utf-8');
内容的提问来源于stack exchange,提问作者saba
相关产品推荐
相关产品推荐

