node.js - 远程 fs.readFile 的问题?(在本地工作,但不在服务器上)
问题描述
下面的代码是用于 Discord 机器人的随机报价生成器,为了便于阅读,我的问题是在我的“开发机器”(发烧友/爱好者 btw)上代码运行良好,但是当上传到我的droplet (ubuntu 18.04, node v8.15) 它什么也不做,甚至没有返回错误。
const fs = require("fs");
exports.run = async (client, message, args) => {
if (!args || args.length > 0) return message.reply("No need for multiple inputs");
fs.readFile("./quotes.json", "utf8", function(err, data) {
const obj = JSON.parse(data);
const result = obj[Math.floor(Math.random() * obj.length)];
message.channel.send(result.quote);
});
};
当代码位于液滴上并且我删除 fs.readfile 和 JSON.parse 块并将回复硬编码到message.channel.send("it works")
其中时,确实会按预期返回消息,我希望有人关注事物并建议它是否是代码问题或可能是服务器配置问题。
下面的工作代码
tbh,我仍然不知道问题出在哪里,所以我在不到 10 分钟的时间内将它全部重写到一个新文件中.. 更改了一些变量名是我所做的一切,除了添加__dirname +
fs.readFile(__dirname + "/maiq-quotes.json", "utf8", function(err, data) {
const quotesobj = JSON.parse(data);
var quote = quotesobj[Math.floor(Math.random() * quotesobj.length)];
console.log(quote);
message.channel.send(quote.quote);
});
解决方案
没有错误有点奇怪,但是请仔细检查文件是否在正确的位置(如果找不到,则应该为此引发错误)并使用ls -l
.
推荐阅读
- http - 有人可以给我一个使用 POST 方法的网址吗?
- angular - CanDeactivate 不适用于使用 Observable 的兄弟模块
- cypress - 从赛普拉斯的下拉列表中选择未知项目
- sql - 按行之间的差异分组日期
- bash - 以非 root 帐户在 Solaris 11.3 上启动 ColdFusion 2018 的问题
- javascript - 用于检查数字值是否为零(而不是空)或更高但不是负数的 Javascript
- r - 如何过滤管道内的标准偏差
- bash - tee 命令在 grep 中通过管道传输并重定向到文件
- python - tensorflow 文档说“警告:避免编写依赖于变量值的代码......”这是什么意思?
- javascript - 为什么在
呈现我的 javascript 时我的标签显示为 [object Object]?