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 Ajax 跨域访问的解决方案
Mar 12 Javascript
ajax不执行success回调而是执行了error回调
Dec 10 Javascript
js函数setTimeout延迟执行的简单介绍
Jul 17 Javascript
JS中的form.submit()不能提交表单的错误原因
Oct 08 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
Aug 29 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
Dec 27 Javascript
javaScript字符串工具类StringUtils详解
Dec 08 Javascript
js计算两个日期间的天数月的实例代码
Sep 20 Javascript
深入理解 TypeScript Reflect Metadata
Dec 12 Javascript
vue-socket.io跨域问题有效解决方法
Feb 11 Javascript
el-table树形表格表单验证(列表生成序号)
May 31 Javascript
JavaScript中关于预编译、作用域链和闭包的理解
Mar 31 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
PHP时间戳使用实例代码
2008/06/07 PHP
解析php利用正则表达式解决采集内容排版的问题
2013/06/20 PHP
PHP实现补齐关闭的HTML标签
2016/03/22 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
5个JavaScript经典面试题
2014/10/13 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
node.js中EJS 模板快速入门教程
2017/05/08 Javascript
vue cli使用融云实现聊天功能的实例代码
2019/04/19 Javascript
微信小程序封装的HTTP请求示例【附升级版】
2019/05/11 Javascript
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
JS异步宏队列与微队列原理区别详解
2020/07/02 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
python 专题九 Mysql数据库编程基础知识
2017/03/16 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
Django视图之ORM数据库查询操作API的实例
2017/10/27 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
python代码实现图书管理系统
2020/11/30 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
幼儿教师国培感言
2014/02/19 职场文书
年度考核自我鉴定
2014/03/19 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
关于JavaScript轮播图的实现
2021/11/20 Javascript
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA
python运算符之与用户交互
2022/04/13 Python