的是旧的"/>
json中的变量变了但是index.js输出的是旧的
interval = setInterval(function() {
online = require("./../../server/oxide/data/online.json");
if (online.ONLINE == -1)
{
client.user.setStatus(`dnd`);
client.user.setActivity("server offline");
}
else if (online.ONLINE == 0)
{
client.user.setStatus(`idle`);
client.user.setActivity("no one");
}
else
{
client.user.setStatus(`online`);
client.user.setActivity(`Players ${online.ONLINE}/500`);
}
console.log(`update ${online.ONLINE}`)
}, 10000);
每10秒在线.ONLINE更新
index.js 仅在我重新启动 js 文件时更改变量,但我无法重新启动它。 smb 可以帮忙吗
回答如下:在 Node.js 中,
require
在第一次调用后被缓存,因此每次调用它都不会再次从文件中读取。 (来源:https://nodejs/api/modules.html#modules_caching)
为了解决这个问题,您可以使用其他Node.js函数,例如
fs.readFileSync
方法每次需要从JSON文件中读取原始文件,示例如下:
const fs = require('fs');
interval = setInterval(function () {
const raw = fs.readFileSync('./../../server/oxide/data/online.json', 'utf-8');
online = JSON.parse(raw);
if (online.ONLINE == -1) {
client.user.setStatus(`dnd`);
client.user.setActivity('server offline');
} else if (online.ONLINE == 0) {
client.user.setStatus(`idle`);
client.user.setActivity('no one');
} else {
client.user.setStatus(`online`);
client.user.setActivity(`Players ${online.ONLINE}/500`);
}
console.log(`update ${online.ONLINE}`);
}, 10000);
(
fs.readFileSync
的第一个参数是文件的路径,而第二个参数用于编码。在大多数情况下使用 utf-8
是很重要的,以确保它支持您可能拥有的所有不同的文本编码/语言你的 JSON 文件)
更多推荐
json中的变量变了但是index.js输出的是旧的
发布评论