【问题标题】:running shell command through ReactJs code通过 ReactJs 代码运行 shell 命令
【发布时间】:2019-04-12 20:46:54
【问题描述】:

我在本地计算机中存储了一个文件,并且还连接了一台打印机。所以一般来说,如果我想给连接的打印机打印文件,我会在命令提示符下运行以下命令:

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;

但在这两种情况下都会出错

无法读取 null 的属性“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"); 

                        }

【问题讨论】:

    标签: reactjs shell shelljs


    【解决方案1】:

    您的 Reactapp 正在浏览器中运行,因此无法访问您的 shell。

    为此,您需要创建一个 React 应用程序可以调用的 Web 服务。这里可以执行shell命令,将结果返回给浏览器中的React。

    【讨论】:

    • 但是在 .Net 中同样的事情是可以实现的。 .Net 也在浏览器中运行。那么有什么方法可以在 react 中实现同样的效果吗?
    • 我并不精通 .Net,但我想它在后端运行并将生成的 HTML 返回到浏览器。 React 将代码提供给浏览器运行,因此我们无法访问 shell。
    • 请查看我更新的问题。从前端我们没有调用任何 api
    • 该 .Net 代码将在服务器上执行以使其正常工作。这不能单独在 React 中完成,需要由服务器上的代码执行。
    猜你喜欢
    • 2011-10-16
    • 2019-02-05
    • 1970-01-01
    • 2017-03-17
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    相关资源
    最近更新 更多