最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

json中的变量变了但是index.js输出的是旧的

网站源码admin51浏览0评论

json中的变量变了但是index.js输出的是旧的

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 文件)

发布评论

评论列表(0)

  1. 暂无评论