gpt4 book ai didi

node.js - mocha fs.existsSync 总是失败

转载 作者:太空宇宙 更新时间:2023-11-03 22:02:13 26 4
gpt4 key购买 nike

我正在尝试检查我的 Mocha 测试中是否存在文件。我知道该文件存在于测试文件夹中(为了简单起见,我将其放在那里,同时尝试让它工作)。但无论我做什么,fs.existsSync 总是失败。 Logger.startup() 创建文件。 Logger.getFilename() 返回类似 5-17-30-2013.log 的值。我是 Mocha 新手,所以不知道我是否犯了一个经典的错误。据我所知,我正在同步使用 Mocha 。感谢您的所有帮助。

这是我的 Mocha 测试脚本:

var logger = require('../logger');
var fs = require('fs');

describe("Logger", function () {
it("Creates a file", function () {
logger.startup();
console.log(logger.getFilename());
if (!fs.existsSync(logger.getFilename())) {
throw ("Logging File Does Not Exist");
}
})
})

最佳答案

当前accepted self-answer's解释不足。它说:

Apearently fs looks at the root of the project, the package.json folder, and not realative to the file calling it, which I did not know.

当然,但这不是偶然,也不是 fs 模块的怪癖。 fs 模块使用 process.cwd() 来解释传递给它的相对路径。除非使用 process.chdir() 进行更改,否则 process.cwd() 是当前进程启动的目录。由于 mocha 通常是从项目的根目录启动的,因此在 mocha 进程中,process.cwd() 通常将是项目的根目录。如果 mocha 是从不同的目录启动的,那么 process.cwd() 将具有不同的值。

困惑可能来自模块系统如何处理相对路径。具有相对路径的模块名称将相对于当前文件的 __dirname 进行解释。该值可能与 process.cwd() 不同。

关于node.js - mocha fs.existsSync 总是失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18543476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com