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

e1xvtsh3  于 2023-04-04  发布在  Java
关注(0)|答案(1)|浏览(97)

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,它将添加的steam id附加到集合中,并将“a”附加到admins_simple.ini。我写了一个单独的shell脚本来进行附加操作,因为当我试图在index.js本身使用fs.appendFile执行此操作时,我得到了相同的错误:

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

而且所有这些都发生在运行Ubuntu的EC2示例的根卷上。
directory containing index.js and addvips.sh
directory containing admins_simple.ini

t9aqgxwy

t9aqgxwy1#

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

相关问题