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 相关文章推荐
关于js datetime的那点事
Nov 15 Javascript
jquery中EasyUI使用技巧小结
Feb 10 Javascript
jQuery内容过滤选择器用法分析
Feb 10 Javascript
自定义百度分享的分享按钮
Mar 18 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
Nov 12 Javascript
JS实现自动阅读单词(有道单词本添加功能)
Nov 14 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
Apr 07 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
Feb 26 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
Sep 01 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
Sep 25 Javascript
微信小程序自定义tabBar组件开发详解
Sep 24 Javascript
vue路由结构可设一层方便动态添加路由操作
Aug 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生成excel文件的简单方法
2014/02/08 PHP
php实现将Session写入数据库
2015/07/26 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
JavaScript 设计模式 富有表现力的Javascript(一)
2010/05/26 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
Javascript动态引用CSS文件的2种方法介绍
2014/06/06 Javascript
jquery选择器简述
2015/08/31 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
vue实现nav导航栏的方法
2017/12/13 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
Vue项目中使用jquery的简单方法
2019/05/16 jQuery
微信小程序实现左滑动删除效果
2020/03/30 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
简要讲解Python编程中线程的创建与锁的使用
2016/02/28 Python
python妙用之编码的转换详解
2017/04/21 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
TensorFlow模型保存/载入的两种方法
2018/03/08 Python
Python中如何导入类示例详解
2019/04/17 Python
简单了解python关系(比较)运算符
2019/07/08 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
Django视图扩展类知识点详解
2019/10/25 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
基于python实现对文件进行切分行
2020/04/26 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
工程造价管理专业大专生求职信
2013/10/06 职场文书
工作决心书范文
2014/03/11 职场文书
班级学雷锋活动总结
2014/06/26 职场文书
工作推荐信模板
2015/03/25 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技