- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我注意到官方 Node 文档对 fs.exists
的描述令人吃惊:
"fs.exists() is an anachronism and exists only for historical reasons. There should almost never be a reason to use it in your own code.
In particular, checking if a file exists before opening it is an anti-pattern that leaves you vulnerable to race conditions: another process may remove the file between the calls to fs.exists() and fs.open(). Just open the file and handle the error when it's not there."
我理解这个建议,打开一个文件,如果它不存在则处理错误,但我不明白为什么接口(interface)被弃用而不是实现简单地改变。
谁能向我解释为什么使用像 fs.exists
一样简单和合乎逻辑的 API 来检查文件是否存在是一件很糟糕的事情,以至于它应该被称为反模式并从 Node API 中删除?
最佳答案
没有必要使用 fs.stat(),因为 fs.existsSync() 还没有被弃用。
https://nodejs.org/api/fs.html#fs_fs_existssync_path
fs.existsSync(path)
Added in: v0.1.21path | Synchronous version of fs.exists(). Returns true if the file exists, false otherwise.
Note that fs.exists() is deprecated, but fs.existsSync() is not. (The callback >parameter to fs.exists() accepts parameters that are inconsistent with other >Node.js callbacks. fs.existsSync() does not use a callback.)
关于node.js - fs.exists、fs.existsSync - 为什么不推荐使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28532820/
我正在尝试使用 inliner command line tool在本地合并一些文件。但我在控制台中收到以下错误消息。 path.existsSync is now called `fs.exists
我正在尝试使用fs.existsSync检查文件是否存在。输入完整的文件系统路径后,成功返回。当路径包含 ~/foo.bar 或 $HOME/foo.bar 等环境变量时,无法找到该文件。 我已经尝试
在 NodeJS 我有: const fs = require('fs'); if (!fs.existsSync("some_path")) { ... } 但我得到了错误: TypeError:
我正在尝试检查我的 Mocha 测试中是否存在文件。我知道该文件存在于测试文件夹中(为了简单起见,我将其放在那里,同时尝试让它工作)。但无论我做什么,fs.existsSync 总是失败。 Logge
我正在使用 TestCafe 和 Node.JS 编写自动化测试脚本。其中一项测试是下载文件并验证下载是否完成。我不想写硬编码 await t.wait(4000); 因为我的测试是基于数据驱动的框架
将 fs.existsSync 放在 try...catch 中是否具有实用值(value)? 有没有可能会报错?这怎么会发生,会是哪个错误? 我问的原因是因为我试图尽可能避免嵌套 try...cat
我用 Angular 创建了一个新的 Electron 项目。我使用 Angular CLI 构建我的应用程序。现在,我想从 Renderer-Process 到 Main-Process 进行通信,
这就是我现在面临的问题。我有一个名为“assets”的文件夹,在该文件夹中我有一个名为“no_icon.png”的图像。我已将其添加到 pubspec.yaml 中,如下所示: flutter:
我正在使用 Angular 10 , Electron 10.0和 electron-builder v22.8.0 . 启动我的 Electron 应用程序时,我在控制台中收到以下错误: fs.ex
我目前正在使用 Vue 和 Electron并想使用 重新启动应用程序 import { app } from 'electron'; export default { name: 'Home',
我在 Ubuntu 14.04 中运行 Node 时得到这个,'fs.existsSync' 不是一个函数。代码是 var fs = require('fs'); fs.existsSync(bu
我在这条路径上有一个文件:~/Downloads/flightlog_2017-71-19_19747.txt 但是当我尝试写入或检查它是否存在时: fs.existsSync('~/Download
我这里有这段代码: if(fs.existsSync('./example/example.js')){ cb(require('../example/example.js')); }else
我注意到官方 Node 文档对 fs.exists 的描述令人吃惊: "fs.exists() is an anachronism and exists only for historical rea
我正在使用 Electron 和 ReactJS 和 typescript 构建跨平台桌面应用程序。所以有一个像下面这样的功能。该功能正在调用按钮单击,它应该在连接的默认打印机中打印文本。这是处理打印
我正在使用 Electron 和 Angular 4 开发应用程序。我想在单击按钮以选择文件夹时显示一个对话框,但是 Electron API 存在问题: 我见过很多人有同样的问题,但我找不到解决这个
在处理 Node 的文件 I/O 时,我发现这两个函数(fs.exists 和 fs.existsSync)可以检查系统中是否存在文件.它们之间有什么区别? 最佳答案 exists 是非阻塞的,您可以
我需要上传文件,我在服务器中使用 Node js(版本:[nodemon] v1.0.1)。下面的代码在4个月之前是有效的,之后我没有检查它,昨天我再次运行它。但它不起作用,我得到了"TypeErro
我读了很多关于 browserify 和 electron 以及 gui 浏览器的问题但是browserify仍然存在问题,说“fs.existsSync不是一个函数”,“required is no
我遇到了一个问题,我在加载 React 应用程序时遇到了 TypeError: fs.existsSync is not a function 错误。 我正在尝试向我的自定义 MacOS 按钮添加功能
我是一名优秀的程序员,十分优秀!