запуск команды оболочки через код ReactJs - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть файл, хранящийся на локальном компьютере, и принтер тоже подключен.Поэтому, как правило, если я хочу распечатать файл на подключенном принтере, я бы запустил следующую команду в командной строке:

cd <path where the file is locally stored>
copy <filename.ext> <portname in which the printer is connected>

Так, например, если у меня есть файл по пути /Users/chandrani.chatterjee/Desktop/TestFolder ипринтер, подключенный к порту lpt1 Я бы написал следующие команды в командной строке

cd /Users/chandrani.chatterjee/Desktop/TestFolder
copy testfilename.txt lpt1

Так что это напечатало бы мой testfilename.txt

Нет. Я хочу добиться этого при нажатии кнопки вReactJs.Я искал в Интернете и узнал о shellJs, но я не уверен, как запускать команды, используя его.

Я пытался

var sh = require('shelljs');
const { stdout, stderr, code } = sh.exec('cd /Users/chandrani.chatterjee/Desktop/TestFolder', { silent: true });

Я также пытался

var sh = require('shelljs');
var output = sh.exec('java -version', {silent:true}).stdout;

но с ошибкой в ​​обоих сценариях

Невозможно прочитать свойство 'stdout' с нулевым значением

Как это сделать правильно?

РЕДАКТИРОВАТЬ:

Например, в .Net то же самое может быть достигнуто с помощью кода ниже:

function create_send_file() { 

                                var fso = new ActiveXObject("Scripting.FileSystemObject"); 
                                var s = fso.CreateTextFile("c:\\FilePrn\\label.prn", true); 
                                s.WriteLine("some string"); 
                                s.Close(); 
                                var newpath = fso.CopyFile("c:\\FilePrn\\label.prn", "lpt1"); 

                        }

1 Ответ

1 голос
/ 12 апреля 2019

Ваш Reactapp работает в браузере, поэтому не имеет доступа к вашей оболочке.

Для этого вам потребуется создать веб-сервис, к которому может обращаться приложение React.Здесь вы можете выполнить команду оболочки и вернуть результат в React в браузере.

...