具有绝对路径的节点 fs.writefile



我有一个发出HTML文件的节点应用程序。这是它如何工作的笑话:

const fs = require('fs');
const outputPath = './dist/html/';
// code that generates names and content
const currentFile = `${outputPath}${name}.html`;
const content = '...';
fs.promises.writeFile(currentFile, content, 'utf8');

这按预期工作,但通常以这种方式编写相对路径是一种不好的做法(这在 Mac 上有效,但在 Windows 机器上可能不起作用(。

const fs = require('fs');
const path = require('path');
const outputPath = path.join(__dirname, 'dist', 'html');
// code that generates names and content
const currentFile = path.join(outputPath, `${name}.html`);
const content = '...';
fs.promises.writeFile(currentFile, content, 'utf8');

这有效,但它在我的项目中创建了一个完整的路径 (User/my.name/Documents/projects/my-project/dist/html/my-file.html(,因为fs.writeFile相对于工作目录写入文件。

我可以将fs写入文件到绝对路径吗?或者,生成相对路径的正确方法是什么?

我最终使用

const outputPath = `.${path.delimiter}dist${path.delimiter}ads${path.delimiter}`;

但这似乎不是最好的解决方案。

根据文档,"fs"模块适用于相对路径和绝对路径。

我想你的问题与路径建设有关。

这是工作代码:

const { promises: fsp } = require('fs');
const { join } = require('path');
const fileName = 'file.html';
const content = '...';
(async () => {
try {
await fsp.writeFile(join(process.cwd(), 'dist', 'html', fileName), content);
} catch (error) { 
// handling
}
})();

相关内容

  • 没有找到相关文章

最新更新