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 相关文章推荐
JavaScript 浏览器验证代码(来自discuz)
Jul 17 Javascript
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
Nov 21 Javascript
window.onresize 多次触发的解决方法
Nov 08 Javascript
jquery获取tagName再进行判断
May 29 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
Jun 04 Javascript
使用JavaScript获取地址栏参数的方法
Dec 19 Javascript
JS模拟键盘打字效果的方法
Aug 05 Javascript
jQuery动态生成不规则表格(前后端)
Feb 21 Javascript
JS实现可视化文件上传
Sep 08 Javascript
React通过redux-persist持久化数据存储的方法示例
Feb 14 Javascript
Node 搭建一个静态资源服务器的实现
May 20 Javascript
JavaScript canvas实现跟随鼠标移动小球
Feb 09 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
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
2007/04/18 PHP
js下函数般调用正则的方法附代码
2008/06/22 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
2015/12/22 PHP
php实现的xml操作类
2016/01/15 PHP
phpMyAdmin通过密码漏洞留后门文件
2018/11/20 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
最新28个很棒的jQuery 教程
2011/05/28 Javascript
JS的replace方法详细介绍
2012/11/09 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
JavaScript实现职责链模式概述
2018/01/25 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
jQuery实现动态生成年月日级联下拉列表示例
2019/05/11 jQuery
微信小程序动态添加view组件的实例代码
2019/05/23 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
jquery 时间戳转日期过程详解
2019/10/12 jQuery
vue中注册自定义的全局js方法
2019/11/15 Javascript
nodejs处理tcp连接的核心流程
2021/02/26 NodeJs
零基础写python爬虫之爬虫编写全记录
2014/11/06 Python
Python进程通信之匿名管道实例讲解
2015/04/11 Python
详解Python中for循环的使用方法
2015/05/14 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
python3读取csv和xlsx文件的实例
2018/06/22 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
Python构建图像分类识别器的方法
2019/01/12 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
文明礼貌演讲稿
2014/05/12 职场文书
党支部党的群众路线对照检查材料
2014/09/24 职场文书
管理失职检讨书范文
2015/05/05 职场文书
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis
Vue vee-validate插件的简单使用
2021/06/22 Vue.js
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android