Node.js文件路径的坑

340 阅读1分钟

简书备份

初学nodejs,在今天遇到了一个神奇的问题,先上代码:

 var data = fs.readFileSync( './system-config.json', "utf8")

没错,我想读取system-config.json中的配置。刚开始,无论如何也读不到,连个错误信息也没有。调试了一番,终于出了一个错误信息: no such file or directory 怎么可能?先看看我的工程目录结构:

root---- |_others |_init |_system-config.json 明明就在这里啊,明明有啊!!!确认了好几遍的!!既然系统说找不到那肯定还是路径不对,最后改成: ```javascript var data = fs.readFileSync(__dirname + '/system-config.json', "utf8") ``` 成功!!!喜极而泣!!!原来,只有 require 的路径是相对当前文件,其他大部分函数接收的路径都是相对于「当前工作目录」即程序运行时的 cwd。所以别一种解决方式就是: ```javascript path.join(process.cwd(), '/init/system-config.json') ``` 当然了,cwd这种方式要保证启动文件在程序的根目录下。 [参看这里](https://nodejs.org/api/process.html#process_process_chdir_directory)