У меня есть приложение узла, которое выполняет скрипт Powershell helloworld.ps1 .Я хочу сделать исполняемый файл этого узла приложения.Для этого я использовал Ziet / pkg и мне удалось создать исполняемый файл для Linux, Mac и Windows , но я получаю сообщение об ошибке при запуске исполняемого файлана любой из платформ.
Ниже приведен код приложения узла:
let spawn = require('child_process').spawn, child;
let mqtt = require('mqtt');
let client = mqtt.connect('mqtt://13.58.186.254')
client.setMaxListeners(50);
runCheckScript = function () {
child = spawn("pwsh", ["./helloworld.ps1"]);
child.stdout.on("data", function (data) {
client.on('connect', () => {
})
console.log("Powershell Script: " + data);
});
child.stderr.on("data", function (data) {
console.log("Powershell Errors: " + data);
});
child.on("exit", function () {
client.publish("codeblock-poc", "Powershell Script finished");
console.log("Powershell Script finished");
client.end();
});
child.stdin.end();
}
module.exports = runCheckScript;
Приведенный выше код выполняется следующим файлом app.js :
runner = require('./powershell');
runCheckScript()
Ниже приведен код сценария Powershell:
echo "Script working"
Get-Date
Write-Host "Press any key to continue ..."
Когда я запускаю приложение узла просто выполнив команду node app.js
, я могу получитьтребуемый вывод, как показано на следующем снимке:
Однако, когда я запускаю исполняемый файл в Windows, я получаю следующую ошибку:
И на Mac я получаю следующую ошибку:
Я пытался, но вродезастрял сейчас.Пожалуйста, дайте мне знать, как мне решить эту проблему.
Ниже приведен файл package.json :
{
"name": "poweshell-executable",
"version": "1.0.0",
"description": "A simple poc to execute powershell thorugh node",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"pkg": {
"assets": "*.ps1"
},
"bin": "index.js",
"author": "Anshuman Upadhyay",
"license": "ISC",
"dependencies": {
"aws-iot-device-sdk": "^2.2.1",
"graphql": "^14.1.1",
"mqtt": "^2.18.8",
"node-powershell": "^3.3.1",
"time": "^0.12.0"
},
"resolutions": {
"nexe/fuse-box": "3.1.0"
}
}
Я снова посетил *Документы 1055 * zeit / pkg и они упомянули о добавлении тега pkg в package.json (как показано выше) и имеют следующий код в index.js , которое является значением bin свойства package.json .
path = require('path');
console.log(__dirname + '/' + 'helloworld.ps1');
path.join(__dirname + '/' + 'helloworld.ps1')
Теперь я создаю исполняемый файл как pkg package.json
, и теперь предыдущая ошибка исчезла, но скрипт не выполняется: