shell在控制台手动执行时工作正常,但当javascript执行它时,我从脚本中得到错误



JavaScript代码为

const admin = require('firebase-admin');
const serviceAccount = require('./raniserverFBkey.json');
const functions = require('firebase-functions');
const { exec } = require('child_process');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
});
exports.addSteamID1 = functions.firestore.document('steamIDs/{docID}')
.onCreate(async (snap, context) => {
const steamID = snap.data().steamID;
exec(`./addvips.sh ${steamID} a`, (err, stdout, stderr) => {
if (err) {
console.error(`exec error: ${err}`);
return;
}
console.log(`stdout: ${stdout}`);
console.error(`stderr: ${stderr}`);
});
});

shell脚本代码是

#!/bin/bash
if [ -z "$1" ] || [ -z "$2" ]
then
echo "Error: Not enough arguments provided."
exit 1
fi
data=""$1" "$2""
echo "$data" >> /home/ubuntu/serverfiles/csgo/addons/sourcemod/configs/admins_simple.ini
echo "Successfully appended '$data' to the file."


当我使用

运行脚本时
./addvips.sh steamid a

脚本运行正常,并成功向admins_simple.ini文件添加数据。

但是当我运行JavaScript代码时,脚本给出错误

stderr: ./addvips.sh: line 10: /home/ubuntu/serverfiles/csgo/addons/sourcemod/configs/admins_simple.ini: No such file or directory

JavaScript代码由Firebase云函数执行。JavaScript文件名为index.js,脚本名为addvips.sh

为什么脚本在终端手动执行时运行良好,但在JavaScript执行时给出错误?

我有一个Firebase云函数,每当一个新文档被添加到集合时就调用它。该函数应该调用脚本addvips.sh,该脚本将添加的蒸汽id附加到集合和"a"admins_simple.ini。我为附加操作编写了一个单独的shell脚本,因为当我试图在index.js中使用fs。我得到相同的错误:

/home/ubuntu/serverfiles/csgo/addons/sourcemod/configs/admins_simple.ini: No such file or directory

所有这些都发生在运行Ubuntu的EC2实例的根卷上。

目录包含index.js和addvips.sh

包含admins_simple.ini的目录

index.js无法成功运行脚本的原因是它运行在谷歌服务器上,而不是我的ec2实例上。

最新更新