我正在尝试使用子进程使用node.js执行脚本外壳
initiateShipment.js
const { execFile } = require('child_process');
execFile('/home/nadhem/TradeFinance/Backend/SmartContract/initiateShipment.sh',
(err, stdout, stderr) => {
if (err) {
console.log(err);
return err;
}
// the *entire* stdout and stderr (buffered)
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
});
initialShipment.sh
docker exec -i cli peer chaincode invoke -o orderer.fte.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/fte.com/orderers/orderer.fte.com/msp/tlscacerts/tlsca.fte.com-cert.pem -C tradechannel -n tradefinancecc -c '{"Args":["initiateShipment","FTE_2"]}'
执行时出现此错误
{ Error: Command failed: /home/nadhem/TradeFinance/Backend/SmartContract/initiateShipment.sh
the input device is not a TTY
at ChildProcess.exithandler (child_process.js:275:12)
at emitTwo (events.js:126:13)
at ChildProcess.emit (events.js:214:7)
at maybeClose (internal/child_process.js:925:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
killed: false,
code: 1,
signal: null,
cmd: '/home/nadhem/TradeFinance/Backend/SmartContract/initiateShipment.sh' }
NB:当我在终端中执行此脚本时,它可以正常工作