记录一些 Node.js 应用中的小知识点,如果你 Google/Baidu “Node.js 如何判断文件是否存在” 发现给出的很多答案还是使用的 fs.exists,这里不推荐使用 fs.exists...你可以选择 fs.stat 或 fs.access。...('text.txt', { encoding: 'utf-8' }); console.log(data); } catch (err) { if (err.code === 'ENOENT...使用 fs.stat fs.stat 返回一个 fs.Stats 对象,该对象提供了关于文件的很多信息,例如文件大小、创建时间等。...fs.constants.F_OK | fs.constants.W_OK, (err) => { if (err) { console.error( `${file} ${err.code === 'ENOENT
Statements/throw https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch node.js...如何处理 操作错误 对于明确的操作错误类型,直接处理掉。 例如尝试打开一个log文件可能会导致 ENOENT ,那么创建这个文件即可。...下面用一个特例来说明这一点: // 异步函数,err是操作错误,使用callback传递 fs.stat('不存在的文件',function(err){}) // 异步函数,参数错误,会立即抛出异常...其实并不是,第二种情况属于编码错误(fs.stat只接收路径作为参数但我们给了他一个null),并不是操作错误。编码错误永远不应该被处理。...所以在使用fs.stat的时,使用者仍然只需要处理callback传递的错误,不需要使用try...catch。 错误的输入属于哪种情况?编码错误还是操作错误?
【Node.js】 fs模块全解析 引言 在Node.js开发中,fs模块犹如一把万能钥匙,解锁着整个文件系统的操作。从读取文件、写入文件、检查状态到目录管理,无所不能。...异步读取文件时,Node.js并不会阻塞主线程,而是将读取操作交由操作系统在后台执行。...当文件读取完成后,Node.js会通过回调函数通知用户程序结果 const fs = require('fs'); // 同步读取文件 try { const data = fs.readFileSync...异步写入文件不会阻塞主线程,而是将写入操作安排到事件循环队列中,一旦写入完成,便调用回调函数通知结果。...此方法仅接收一个参数:文件路径(必需),并直接返回一个fs.Stats对象,如果不成功,则抛出错误。
如何处理 操作错误 对于明确的操作错误类型,直接处理掉。 例如尝试打开一个log文件可能会导致 ENOENT ,那么创建这个文件即可。...下面用一个特例来说明这一点: // 异步函数,err是操作错误,使用callback传递 fs.stat('不存在的文件',function(err){}) // 异步函数,参数错误,会立即抛出异常...其实并不是,第二种情况属于编码错误(fs.stat只接收路径作为参数但我们给了他一个null),并不是操作错误。编码错误永远不应该被处理。...所以在使用fs.stat的时,使用者仍然只需要处理callback传递的错误,不需要使用try...catch。 错误的输入属于哪种情况?编码错误还是操作错误?...如果任意一点不匹配,则立即抛出throw异常。 此外,还应该有: 使用方可以预料到的操作错误、如何捕获这些错误、返回值。
ctx, ctx.path, opts); } catch (err) { // 如果不是404,可能是一些400,500这种非预期的错误,将它抛出去...// 如果没成功,就让后续中间件继续处理他 // 如果成功了,本次请求就到此为止了 if (!...} } 复制代码 koa-static源码总共就几十行:github.com/koajs/stati… koa-send 上面我们看到koa-static其实是包装的koa-send,真正发送文件的操作都是在...如果文件存在,就用fs.stat拿到的信息设置Content-Length和一些缓存控制的header。...由于http模块提供和的res本身就是一个可写流,所以我们可以通过可读流的pipe函数直接将ctx.body绑定到res上,剩下的工作Node.js会自动帮我们完成。
二、Node.js 文件系统 Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。...{处理器个数 – 1} %Os%: 系统 返回操作系统的名称。Windows 2000 将操作系统显示为 Windows_NT。...{操作系统名 – Windows_NT} %Path%: 系统 指定可执行文件的搜索路径。 %PathExt%: 系统 返回操作系统认为可执行的文件扩展名的列表。...四、作业 4.1、根据视频完成每一个上课示例。...4.4、使用config的方式完成4.3 4.5、使用.env,dotenv的方式完成4.3 4.6、使用系统环境变量完成4.3 五、视频 https://www.bilibili.com/video
使用方法如下: const fs = require('fs'); 所有的文件系统操作都有同步和异步两种形式。 异步 异步形式的最后一个参数是完成时的回调函数。...如果操作成功完成,则第一个参数(异常)会是 null 或 undefined。.../tmp/hello'); }); 同步 当使用同步操作时,任何异常都会立即抛出,可以使用 try/catch 处理异常。...所以下面的例子可能会出错,因为 fs.stat() 可能在 fs.rename() 之前完成: fs.rename('/tmp/hello', '/tmp/world', (err) => { if...(err) throw err; console.log('重命名完成'); }); fs.stat('/tmp/world', (err, stats) => { if (err) throw
官方现在都不建议使用这个东西了,建议用 fs.stat() 或 fs.access()来替换。...fs.stat()可以查看文件或文件夹的属性,stats.isFile()判断这个是不是文件。fs.readFile()是用来读取文件的。...同步操作的好处是简单,但是当读文件时就不能再进行其他操作了,而异步读取不需要等待,但是代码比较复杂。...如果退出码为空表示退出码为’0’或者’process.exitCode’.这些代表以成功状态退出。如果退出码为1,就是让进程强制退出,即便还有操作未完成。...今天忙其他事情去了,没啥时间写区块链文章,就发一篇之前学Node.js记录的笔记吧。
/geyao1",(err)=>{ console.log(err) if(err&&err.code==="ENOENT"){ console.log("目录已经存在".../geyao/geyao.txt","\nhello fangfang",(err)=>{ console.log(err) }) 运行结果 读操作 const fs=require.../geyao",(err,data)=>{ console.log(data) }) 运行结果 判断是否文件 const fs=require("fs") fs.stat(".
考虑到两个任务都成功完成而没有显示任何错误被抛出,这似乎有点不寻常。 在浏览了一堆性能数据的发生后,一个更清晰的图片浮现出来,即正在发生什么。...结果每个抛出的错误都是一个 ENOENT 代码或一个 ENOTDIR 代码。...这通常是通过TypeScript的 paths 编译器选项或捆绑器中的解析别名来完成的。问题在于,这些通常与包导入无法区分。...当node.js出现时,它推广了CommonJS模块系统。该系统有几个“可爱”的特性,比如可以省略正在加载的文件的扩展名。当你编写像 require("....当涉及到模块解析时,主要有以下四个要点: 尽可能避免频繁调用文件系统 尽可能缓存以避免调用文件系统 当你使用 fs.stat 或 fs.statSync 时,请始终设置 throwIfNoEntry:
Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。...('读取文件出错: ' + err.message); } 读取成功后输出:文件内容:你好。...链式流一般用于管道操作。 接下来我们就是用管道和链式来压缩和解压文件。...input.txt') .pipe(zlib.createGzip()) .pipe(fs.createWriteStream('input.txt.gz')); console.log("文件压缩完成.../index.txt",function(err){ // 文件和目录不存在的情况下; if(err.code == "ENOENT"){ console.log("文件和目录不存在
与其他任何编程语言一样,Node.js提供了用于处理操作系统文件的本机fs模块。 使用此模块,您可以轻松地读取,写入和观看文件以及许多其他内容。...fs模块为我们提供了异步和同步选项来处理文件: 同步选项将阻止代码执行,直到文件操作完成为止。 异步选项不会阻止代码的执行。 文件操作完成后,它将调用回调函数。...处理运行时错误的最简单方法是将它们作为我们上面使用的Node.js异常抛出。...// log the error here } console.log(data); }); 现在,如果执行上述代码,您将在终端上看到类似以下内容的内容: { [Error: ENOENT...: no such file or directory, open '404.txt'] errno: -2, code: 'ENOENT', syscall: 'open
同样可以通过输入 "npm -v" 来测试是否成功安装。...命令如下,出现版本提示表示安装成功: $ npm -v 6.4.1 如果你安装的是旧版本的 npm,可以很容易得通过 npm 命令来升级,命令如下: $ sudo npm install npm -g...虚拟机的功能,执行js代码 提供C++函数接口,为nodejs提供v8初始化,创建context,scope等 libuv 基于事件驱动的异步IO模型库,我们的js代码发出请求,最终由libuv完成...在 Node.js 我们可以直接访问到 global 的属性,而不需要在应用中包含它。 文件操作 简介 Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。...The solution is: ', results[0].solution); }); 执行以下命令输出结果为: $ node test.js The solution is: 2 数据库 CRUD 操作
一些基础知识 抛出错误的几种方式: 捕获错误 分类错误 一般来说,我们将错误简单的分为两种类型:操作错误、编码错误。...如何处理 操作错误 1、对于明确的操作错误类型,直接处理掉。 例如尝试打开一个log文件可能会导致 ENOENT ,那么创建这个文件即可。...其实并不是,第二种情况属于编码错误(fs.stat只接收路径作为参数但我们给了他一个null),并不是操作错误。编码错误永远不应该被处理。...所以在使用fs.stat的时,使用者仍然只需要处理callback传递的错误,不需要使用try...catch。 错误的输入属于哪种情况?编码错误还是操作错误?...例如需要连接到一个服务器,函数接收一个ip地址作为参数,那么有几种做法: 1、函数只接收ip地址格式的参数,如果不符合格式,则立即抛出异常。
引言 通过 Node.js 编写一个 全局可用 CLI,用于日常生活。.../yiyungent.github.io' npm 初始化 项目 新建文件夹 moq mkdir moq 进入文件夹 cd moq npm 初始化项目 npm init 输入项目描述 完成 package.json.../usr/bin/env node console.log("执行成功") !.../usr/bin/env node 表明 当前文件需以 Node.js 脚本执行 完成后,即可全局安装 moq,在项目所在目录执行: npm install -g 此时全局安装成功,下面测试命令: moq...测试成功 交互式命令行 这里依赖两个库进行开发 commander.js :完整的 node.js 命令行解决方案 Inquirer.js :常见的交互式命令行集合 npm install commander
1. node.js 回调函数 node.js 的异步编程思想最直接的体现就是回调,在node中大量使用了回调函数,所有的API都支持回调函数,回调函数一般作为最后一个参数出现,正因为这样node在执行代码的时候就没有阻塞或者等待的操作...如上:阻塞代码就是需要等待前面的代码执行完成后才能继续往后执行。...,等到读取完成后在执行读取文档的相关操作。...当这个请求完成后,它会被放回到处理队列的开头,并将这个结果返回给用户。 node.js 的事件驱动扩展性非常强,因为web server一直在接受请求,而不进行任何等待操作,效率非常的高。...; 执行结果: 连接成功 数据接受成功 程序执行完毕 node 应用程序如何工作 在 Node 应用程序中,执行异步操作的函数将回调函数作为最后一个参数, 回调函数接收错误对象作为第一个参数。
常用函数 文件操作相关的模块。...具体用法,可以参考Node.js文档:http://nodejs.cn/api/fs.html fs.stat/fs.statSync:访问文件的元数据,比如文件大小,文件的修改时间 fs.readFile...fs.readdir(target, (err, files)=>{ //遍历数组 files.forEach( f =>{ // 判断当前的f到底是文件夹还是文件 fs.stat.../a.txt", (err)=>{ if(err){ console.log("删除失败:"+err); }else { console.log("删除成功
8 或更高版本 安装node.js 官网下载地址:https://nodejs.org/en/download/ ?...下载后一路傻瓜式安装,安装完成后,运行cmd,输入node –v查看版本号,然后输入npm -v C:\Users\dell>node -v v10.2.0 C:\Users\dell>npm -v...可以通过输入 “npm -v”来测试是否成功安装. npm -v 如果npm版本过低,也可以通过以下指令升级npm版本 npm install npm -g npm直接下载会很慢,先修改下载源http:...//registry.npm.taobao.org npm config set registry http://registry.npm.taobao.org 改完之后查看是否改成功 npm config...You should commit this file. npm WARN enoent ENOENT: no such file or directory, open 'D:\Cypress\package.json
领取专属 10元无门槛券
手把手带您无忧上云