首页 > 解决方案 > 文件系统不想在 Node.js 中写入特定文件

问题描述

console.log(`./settings/${mob.serverName}/${mob.channelName}.json`); // ./settings/Mobbot Test Server/mobtimusprime.json
fsp.writeFile(`./settings/${mob.serverName}/newfile.json`, settings); // actually creates the right file, in the right path
console.log(fs.existsSync(`./settings/${mob.serverName}`)); // true
fsp.writeFile(`./settings/${mob.serverName}/${mob.channelName}.json`, settings); // does nothing, doesn't throw an error, just does absolutely nothing.

我不知道发生了什么,我已经多次检查拼写,但一切似乎都应该工作,但没有。

附加信息:node -v // v14.2.0
windows 10

顺便提一句:

const fsp = require('fs').promises;

万一这不明显。

编辑:这更像是我想要做的事情(当然,显示问题所需的最少代码)。

const myFunc = async (settings) => {
  try {
    return await fsp.writeFile(`./settings/${mob.serverName}/${mob.channelName}.json`, settings);
  } catch (e) {
    console.log(e)
  }
}

编辑2:

更多上下文:

const settingsUpdater = async (settings) => {
  try {
    return await fsp.writeFile(`./settings/${mob.serverName}/${mob.channelName}.json`, settings);
  } catch (e) {
    console.log(e)
  }
}

const callingFunction = async (...args) {
  try {
    await settingsUpdater(settings);
    const { pieceOfUpdatedSettings } = require(`../settings/${mob.serverName}/${mob.channelName}.json`);
    anotherFunction(pieceOfUpdatedSettings); 
  } catch (e) {
    console.log(e)
 }
}

标签: javascriptnode.jsfs

解决方案


类似的东西?

const fs = require('fs');
const path = './path/to/file'
const data = 'yourdata'

fs.appendFile(path, data, (err) => {
    if err console.log(err);
});

fs.appendFile()如果不存在,将创建一个文件,或者重写一个文件。我在这里使用了回调,但您也可以使用同步函数fs,而不是异步函数,如下所示:

try {
    fs.appendFileSync(path, data);
} catch (err) {
    console.log(err);
}

Fs 文档:https ://nodejs.org/api/fs.html


推荐阅读