无法从Windows上的Node.js脚本中生成`gcloud app deploy`
我正在构建一个
Electron应用程序(Node.js),它需要从应用程序中生成gcloud app deploy并提供实时反馈(stdin / stdout / stderr).
我迅速从child_process切换到execa,因为我在Mac OS X上遇到了一些问题,其中child_process缓冲区限制为200kb(gcloud app deploy会发送一大块字符串> 200kb,这会导致命令崩溃). 现在,有了execa,一切似乎都在OSX上正常工作,但在Windows上却没有. 代码看起来像这样: let bin = `gcloud${/^win/.test(process.platform) ? '.cmd' : ''}` //which: https://github.com/npm/node-which which(bin,(err,fullpath) => { let proc = execa(fullpath,['app','deploy'],{ cwd: appPath }) proc.stdout.on('data',data => { parseDeploy(data.toString()) }) proc.stderr.on('data',data => { parseDeploy(data.toString()) }) proc.then(() => { ... }).catch(e => { ... }) }) 此代码在Mac OS X上完美运行,而我在Windows上的结果却不一样 我尝试了很多东西: > execa() 我已经制作了一个GIST来显示我在Windows上使用基本Child Process脚本进行的一些测试所得到的响应: 我还在execa存储库中打开了一个问题:https://github.com/sindresorhus/execa/issues/97 有人已经解决了这个问题吗?我已经四处寻找,除了这个reddit thread没有解决这个问题之外没有找到任何希望.
在幕后,gcloud.cmd正在运行一个python脚本.在阅读了ChildProcess / Python和Windows的大量Node.js问题后,我遇到了这个问题:
https://github.com/nodejs/node-v0.x-archive/issues/8298
从Node.js子进程运行Python脚本有一些已知问题. 此comment解释了如何将此选项设置为环境变量(不直接修改Windows shell脚本):https://docs.python.org/2/using/cmdline.html#envvar-PYTHONUNBUFFERED 因此,将PYTHONUNBUFFERED添加到环境变量可以解决此问题! execa(fullpath,{ cwd: appPath,env: Object.assign({},process.env,{ PYTHONUNBUFFERED: true }) }) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows10 64位下安装pycocotools, imgaug问题
- xaml – 在Bing Maps上为Metro应用程序设置标记引脚的动画
- Windows Phone 8(WP8)C#不安全代码?
- cmd – 如何记录Windows XP命令行应用程序中显示的文本
- 如何让编译日志在Emacs中创建一个新窗口?
- .net – 控制台应用程序在Windows服务上的优点
- win10激活错误,软件授权服务报告无法激活计算机怎么办?
- Windows运行时 – WinRT / Metro是否支持多台显示器?
- active-directory – Active Directory用户 – 所有属性突然
- windows-phone-7 – AudioPlayerAgent不支持的API