我正在快速路线中的child_process.exec中执行命令 - 该服务在本地完美运行但是一旦我将它部署到Heroku,fs.writeFile就不起作用(也就是说,一切正常但没有错误但是我找不到文件)。我甚至在回调中放了一个fs.existsSync,它返回true(!) - 当我运行heroku运行bash并通过shell CLI浏览目录时,为什么我找不到它?写作正在以下表达式中完成:
const router = require('express').Router();
const exec = require('child_process').exec;
const fs = require('fs');
module.exports = router
.get('/data', (req, res, next) => {
exec('npm run get', { cwd: __dirname }, (err, stdout, stderr) => {
if (err) {
console.error(`exec error: ${err}`);
return;
}
var truncated = stdout.split("...");
var trunc = truncated[1].split("\n");
var name = Date();
fs.writeFile(`${__dirname}/data/${name}.txt`, trunc, function (err, written, string) {
console.log(fs.existsSync(`${__dirname}/data/${name}.txt`));
if (err) throw err;
res.json(trunc.slice(1, 11));
});
});
}):
我试过写,writeSync,也尝试了一个流 - 所有相同的问题。与远程服务器上的子进程中使用的fs有什么关系?