gpt4 book ai didi

node.js - 如何控制spawnCommand方法的执行位置

转载 作者:太空宇宙 更新时间:2023-11-03 23:06:06 24 4
gpt4 key购买 nike

我如何理解和控制spawnCommand的运行位置?

我正在创建一个 yo 生成器,作为该过程的一部分,我需要调用外部工具。我尝试执行此操作的方法是从spawnCommand 调用powershell 脚本。我在使用spawnCommand时遇到了路径中含有空格的问题,所以我只是将其封装在powershell文件中。我看到了一些有关 superspawn 的内容,但无法让它发挥作用。

无论如何,我的主要问题是我试图调用 powershell 并将脚本文件作为参数提供给它,但它找不到脚本文件。这是代码:

  signatureKeyFile: function() {
var done = this.async();

this.spawnCommand('powershell', ['sign.ps1'], {
cwd: this.destinationPath('.')
}).on('close', done);

},

我尝试使用 procmon 来查看它从哪个目录执行并更好地理解它。看起来它在很多地方都尝试过,但似乎都是环境路径。它不会尝试 yo 生成器的源路径或目标路径,或者至少在我看来是这样。

所以我的问题是1)spawnCommand默认从哪个工作目录运行?2)我如何控制它以便它可以找到这个powershell文件? spawnCommand 不允许我在路径中使用空格,因此我无法为其提供完整路径,或者在我看来是这样。

非常感谢!

最佳答案

spawnCommand won't let me use spaces in paths, so I can't feed it a full path or so it seems to me.

这通常是众所周知的命令行问题。参数由空格分隔,因此它只是假设您的路径实际上是多个参数。

我不是 100% 支持 Windows,但在 OSx 上,您可以将空格分隔为 some\path\with\space

另一个选项是将参数作为字符串传递。如果您要将路径用双引号括起来怎么办?

this.spawnCommand('powershell', ['"/home/My Home/sign.ps1"']);

FWIW,Yeoman spawnCommand 只是 Node spawn 命令的包装器,我们帮助规范化命令,以便它在 Windows 上运行良好。参见

如果您可以将问题范围缩小到仅使用 Node 生成命令,它将帮助您测试传递路径的正确语法。

[已编辑以修复损坏的链接]

关于node.js - 如何控制spawnCommand方法的执行位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34580068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com