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

 更新时间:2019年10月23日 14:26:45   作者:byd张小伟  
在本篇文章里我们给大家带来一篇关于node.js使用fs读取文件出错的解决办法,有需要的朋友们参考下。

今天配接口,使用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只有一个执行线程。

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

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

相关文章

  • 详解如何在NodeJS应用程序中处理多个API请求

    详解如何在NodeJS应用程序中处理多个API请求

    NodeJS默认是异步的,这意味着它已经能够同时处理多个请求,但它只适用于I/O操作,如HTTP请求、文件系统操作、数据库查询、实时聊天应用等,在处理CPU密集型任务时,可能需要很长时间,这就是为什么NodeJS提供了一些我们将在下面介绍的特定包
    2023-12-12
  • 安装使用Mongoose配合Node.js操作MongoDB的基础教程

    安装使用Mongoose配合Node.js操作MongoDB的基础教程

    这篇文章主要介绍了安装使用Mongoose来让Node.js操作MongoDB的基础教程,前端js+后端node+js操作MongoDB正是所谓最流行的一种JavaScript全栈开发方案,需要的朋友可以参考下
    2016-03-03
  • 基于Koa(nodejs框架)对json文件进行增删改查的示例代码

    基于Koa(nodejs框架)对json文件进行增删改查的示例代码

    这篇文章主要介绍了基于Koa(nodejs框架)对json文件进行增删改查的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • Node.js Domain 模块实例详解

    Node.js Domain 模块实例详解

    这篇文章主要介绍了Node.js Domain 模块实例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Node.js从字符串生成文件流的实现方法

    Node.js从字符串生成文件流的实现方法

    这篇文章主要介绍了Node.js从字符串生成文件流的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • node.js中的定时器nextTick()和setImmediate()区别分析

    node.js中的定时器nextTick()和setImmediate()区别分析

    本文介绍了node.js中的定时器nextTick()和setImmediate()的区别分析,非常的不错,这里推荐给大家。
    2014-11-11
  • node.js中实现双重身份验证机制的方法详解

    node.js中实现双重身份验证机制的方法详解

    双重身份验证(Two-factor authentication)是一种安全机制,它要求用户提供两种不同的身份验证因素来访问他们的帐户,下面我们就来学习一下如何使用speakeasy在nodejs中实现双重身份验证吧
    2023-10-10
  • node.js 动态执行脚本

    node.js 动态执行脚本

    其中的Script对象,就与require('vm')返回的对象很相似,而实质上,vm模块就是对Script对象的封装。
    2016-06-06
  • Node.js数据流Stream之Readable流和Writable流用法

    Node.js数据流Stream之Readable流和Writable流用法

    这篇文章介绍了Node.js数据流Stream之Readable流和Writable流的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • pm2与Verdaccio搭建私有npm库过程详解

    pm2与Verdaccio搭建私有npm库过程详解

    这篇文章主要介绍了pm2与Verdaccio搭建私有npm库过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08

最新评论