调用execSync时nodejs中的EPERM错误

时间:2016-01-24 22:40:33

标签: io electron

在我的Windows电子版应用程序中(我认为它在引擎盖下使用了node.js或io.js?),我有以下代码行存在问题:

from array import * from utilities import utilities from algorithms import algorithms def main(): utils = utilities() alg = algorithms() results = utils.load() for line in results: max_sub_array, max_sum = alg.simpleenumeration(line) utils.printtofile("Simple Enumeration", max_sub_array, max_sum) max_sub_array, max_sum = alg.betterenumeration(line) utils.printtofile("Better Enumeration", max_sub_array, max_sum) max_sub_array, max_sum = alg.divConMaxSub(line) utils.printtofile("Divide and Conquer", max_sub_array, max_sum) max_sub_array, max_sum = alg.linear_sub_array(line) utils.printtofile("Linear sub array", max_sub_array, max_sum) # print("--------------------") main()

当我通过命令行运行应用程序时,此代码可以正常运行,例如var ipconfigOutput = child_process.execSync("ipconfig").toString();

但是,打包我的应用程序后,我遇到了问题。当我使用electron .构建应用程序时,如果我从命令行调用构建的electron-packager文件,则此代码可以正常工作。 然而,如果我通过在Windows资源管理器中双击构建的exe来运行程序,则会出现以下错误:

exe

为什么会出现此错误,我应该如何更改上述代码?

我想这是因为stdout在通过命令行启动进程时的工作方式与通过Explorer启动时的工作方式有所不同,但我不能很好地理解IO,以便知道出了什么问题这里。

1 个答案:

答案 0 :(得分:0)

我发现我可以通过将代码更改为

来获取代码

var ipconfigOutput = child_process.spawnSync("ipconfig").stdout.toString();

但是,我不确定为什么 spawnSync现在有效,execSync没有。如果有人可以评论,那就太棒了!