请考虑以下内容:
conversations.json
:[]
db.js
:
let fs = require('fs');
let conversations = require('./conversations.json');
function addConversation(conversation){
console.log(conversations);
conversations.push(conversation);
try{
fs.writeFileSync('conversations.json', JSON.stringify(conversations));
}
catch(err){
console.error('Parse/WriteFile Error', err)
}
}
module.exports = {
addConversation
}
app.js
:
let database = require('./db.js');
database.addConversation(
{
key1: '1233',
key2: '433',
key3: '33211'
}
);
运行:
node app.js
没有引发错误。一切按预期进行编译。问题在于,一旦从conversations.json
调用了addConversation
函数,就不会更新app.js
。
有趣的是,一旦在addConversation
中调用了db.js
,一切工作就很好,并且conversations.json
正在更新。
我想念什么?
答案 0 :(得分:2)
我想念什么?
可能是作为模块加载时,您正在将文件写入错误的目录。
执行此操作时:
fs.writeFileSync('conversations.json', JSON.stringify(conversations));
这会将conversations.json
写入当前的工作目录,该目录可能是也可能不是您的模块目录。如果要将其写入模块目录,则位于以下位置:
let conversations = require('./conversations.json');
将从中读取它,然后您需要使用__dirname
来制造适当的路径。
fs.writeFileSync(path.join(__dirname, 'conversations.json'), JSON.stringify(conversations));
require()
在使用./filename
时自动在当前模块的目录中查找,但是fs.writeFileSync()
使用当前的工作目录,而不是模块的目录。