node.js使用fs读取文件出错的解决方案


Posted in Javascript onOctober 23, 2019

今天配接口,使用fs模块读取json出现了错误'no such file or directory',然后经查终于解决,特此记录。

使用nodejs的fs模块读取文件时习惯用相对路径,但是运行的时候出现了上述的错误,原因就是fs模块读取文件的相对路径是以启动server.js的位置为基准的,而不是以server.js文件的位置。
这就是这篇文章所要讲述的问题。并且nodejs官方推荐在使用fs模块读取文件时使用绝对路径,而不是相对路径。

但是写绝对路径又有些许麻烦,那该如何解决呢,参考以下代码就可以啦:

var fs = require('fs');
let path = require('path');
let PUBLIC_PATH = path.resolve(__dirname, 'xx.json');

fs.readFile(PUBLIC_PATH, 'utf8', function (err, data) {
 if (err) console.log(err);
 
});

补充:

在fs模块中,提供同步方法是为了方便使用。那我们到底是应该用异步方法还是同步方法呢?

由于Node环境执行的JavaScript代码是服务器端代码,所以,绝大部分需要在服务器运行期反复执行业务逻辑的代码,必须使用异步代码,否则,同步代码在执行时期,服务器将停止响应,因为JavaScript只有一个执行线程。

服务器启动时如果需要读取配置文件,或者结束时需要写入到状态文件时,可以使用同步代码,因为这些代码只在启动和结束时执行一次,不影响服务器正常运行时的异步执行。

以上就是本次介绍的全部相关知识点,感谢大家的学习和对三水点靠木的支持。

Javascript 相关文章推荐
jQuery+.net实现浏览更多内容(改编php版本)
Mar 28 Javascript
JQuery页面的表格数据的增加与分页的实现
Dec 10 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
Feb 13 Javascript
为什么JS中eval处理JSON数据要加括号
Apr 13 Javascript
理解js回收机制通俗易懂版
Feb 29 Javascript
JavaScript实现简单的拖动效果
Jul 02 Javascript
浅谈Angular的$q, defer, promise
Dec 20 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
Mar 01 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
Apr 13 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
Apr 18 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
Sep 18 Javascript
微信小程序实现弹出菜单动画
Jun 21 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
Oct 23 #jQuery
JavaScript提升机制Hoisting详解
Oct 23 #Javascript
使用p5.js实现动态GIF图片临摹重现
Oct 23 #Javascript
p5.js临摹动态图形的方法
Oct 23 #Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
Oct 23 #Javascript
p5.js实现动态图形临摹
Oct 23 #Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
Oct 23 #Javascript
You might like
thinkphp中的url跳转用法分析
2016/07/12 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
让iframe子窗体取父窗体地址栏参数(querystring)
2009/10/13 Javascript
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python抓取框架 Scrapy的架构
2016/08/12 Python
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
mac下如何将python2.7改为python3
2018/07/13 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
python中doctest库实例用法
2020/12/31 Python
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
生物科学专业个人求职信范文
2013/12/05 职场文书
大学生实习自我鉴定
2013/12/11 职场文书
护士检查书
2014/01/17 职场文书
《乌鸦和狐狸》教学反思
2014/02/08 职场文书
小学运动会入场式解说词
2014/02/18 职场文书
自行车广告词大全
2014/03/21 职场文书
义务教育学校标准化建设汇报材料
2014/08/16 职场文书
我的中国梦演讲稿1000字
2014/08/19 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis
MySQL数据库简介与基本操作
2022/05/30 MySQL