为什么我的exec命令失败,但是如果在终端中传递了该命令,该命令仍然有效?

DᴀʀᴛʜVᴀᴅᴇʀ

由于某种原因,我不理解为什么我的exec命令中存在问题,并且我相信我已正确参考了文档和示例。在终端中运行此命令时,我没有任何问题:

gitleaks --repo=https://github.com/user/repo -v --username=foo --password=bar

但是当我尝试将其编码为模块时,可以在package.json中对其进行调用:

const { exec } = require("child_process")
const test = `gitleaks --repo=https://github.com/user/repo -v --username=foo --password=bar`

const execRun = (cmd) => {
  return new Promise((resolve, reject) => {
    exec(cmd, (error, stdout, stderr) => {
      if (error) reject(error)
      resolve(stdout ? stdout : stderr)
    })
  })
}

(async () => {
try {
  const testing = await execRun(test)
  console.log(testing)
} catch (e) {
  console.log(e)
}
})()

但是我继续得到错误:

{ Error: Command failed: gitleaks --repo=https://github.com/user/repo -v --username=foo --password=bar

    at ChildProcess.exithandler (child_process.js:294:12)
    at ChildProcess.emit (events.js:198:13)
    at maybeClose (internal/child_process.js:982:16)
    at Socket.stream.socket.on (internal/child_process.js:389:11)
    at Socket.emit (events.js:198:13)
    at Pipe._handle.close (net.js:606:12)
  killed: false,
  code: 1,
  signal: null,
  cmd:
   'gitleaks --repo=https://github.com/user/repo -v --username=foo --password=bar' }

我试图研究我的问题,以查看是否缺少某些内容,并阅读:

为什么我的exec命令失败,但是我可以在终端中传递相同的命令并且它起作用?

理查德·吉格

exec函数运行命令时,它将检查该命令的退出代码。它假定非0的退出代码是错误,因此在回调中传递了错误。如果gitleaks在回购中发现秘密,则退出并显示代码1。

遵循这些原则的东西应该起作用:

const { exec } = require("child_process")
const test = `gitleaks --repo=https://github.com/user/repo -v --username=foo --password=bar`

const execRun = (cmd) => {
  return new Promise((resolve, reject) => {
    exec(cmd, (error, stdout, stderr) => {
      if (error) {
        if (error.code === 1) {
          // leaks present
          resolve(stdout);
        } else {
          // gitleaks error
          reject(error);
        }
      } else {
        // no leaks
        resolve(stdout);
      }
    })
  })
}

(async () => {
try {
  const testing = await execRun(test)
  console.log(testing)
} catch (e) {
  console.log(e)
}
})()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

但是如果在excel中命令

来自分类Dev

为什么此命令在我的终端上有效,但在我的代码中无效?

来自分类Dev

如果在命令提示符下运行但不在脚本中运行,则命令有效。

来自分类Dev

Linux。为什么我的 Linux 命令在终端上有效,但在脚本中无效

来自分类Dev

如果“ java”不在我的路径中,为什么它在终端(bash)中是有效命令?

来自分类Dev

Make找不到命令,但是该命令在Shell中有效

来自分类Dev

命令在crontab中失败,但在终端中有效

来自分类Dev

严格的标准:只能通过引用传递变量-为什么这仍然有效,我该如何纠正?

来自分类Dev

为什么powershell命令在终端中有效但在lnk文件中无效?

来自分类Dev

如果在命令行上指定了帮助选项,我该如何终止应用程序?

来自分类Dev

我做了一个自动响应特定消息的命令。该命令有效,但是它使我所有其他命令不起作用(discord.py重写)

来自分类Dev

如果bash命令失败,我该如何做?

来自分类Dev

为什么只能在终端中运行此命令,而不能在启动命令或“运行命令” GUI框中运行该命令?

来自分类Dev

为什么此命令“google-auth”在终端中有效,但在 bash 脚本中无效?

来自分类Dev

subprocess ssh命令对于某些命令失败,但对于其他命令则不然(命令在终端中有效)

来自分类Dev

尽管有错误,但是杀死命令仍然有效

来自分类Dev

如果在测试文件中找到字符串,如何使dos中的find命令失败?

来自分类Dev

如果在python的字典中找不到该字母,我该如何返回该字母

来自分类Dev

为什么该脚本有效?

来自分类Dev

该命令为什么返回“获得生命!”?

来自分类Dev

Linux为什么不在PATH环境中的所有目录中查找该命令?

来自分类Dev

我的命令仅在我从终端运行时才有效。当我使用启动器时它不起作用。我该怎么做才能解决这个问题?

来自分类Dev

为什么即使索引已关闭,该索引号也仍然有效?

来自分类Dev

为什么在for循环中使用此命令复制文件的命令在bash中有效,而在zsh中却无效?

来自分类Dev

该命令有什么作用?使用选项查找命令

来自分类Dev

该命令中“ -y”的含义是什么

来自分类Dev

为什么Windows命令外壳告诉我使用其他命令,然后说该命令不存在?

来自分类Dev

命令在命令行上有效,但在批处理文件中失败

来自分类Dev

此tar命令在命令行上有效,但在脚本中失败

Related 相关文章

  1. 1

    但是如果在excel中命令

  2. 2

    为什么此命令在我的终端上有效,但在我的代码中无效?

  3. 3

    如果在命令提示符下运行但不在脚本中运行,则命令有效。

  4. 4

    Linux。为什么我的 Linux 命令在终端上有效,但在脚本中无效

  5. 5

    如果“ java”不在我的路径中,为什么它在终端(bash)中是有效命令?

  6. 6

    Make找不到命令,但是该命令在Shell中有效

  7. 7

    命令在crontab中失败,但在终端中有效

  8. 8

    严格的标准:只能通过引用传递变量-为什么这仍然有效,我该如何纠正?

  9. 9

    为什么powershell命令在终端中有效但在lnk文件中无效?

  10. 10

    如果在命令行上指定了帮助选项,我该如何终止应用程序?

  11. 11

    我做了一个自动响应特定消息的命令。该命令有效,但是它使我所有其他命令不起作用(discord.py重写)

  12. 12

    如果bash命令失败,我该如何做?

  13. 13

    为什么只能在终端中运行此命令,而不能在启动命令或“运行命令” GUI框中运行该命令?

  14. 14

    为什么此命令“google-auth”在终端中有效,但在 bash 脚本中无效?

  15. 15

    subprocess ssh命令对于某些命令失败,但对于其他命令则不然(命令在终端中有效)

  16. 16

    尽管有错误,但是杀死命令仍然有效

  17. 17

    如果在测试文件中找到字符串,如何使dos中的find命令失败?

  18. 18

    如果在python的字典中找不到该字母,我该如何返回该字母

  19. 19

    为什么该脚本有效?

  20. 20

    该命令为什么返回“获得生命!”?

  21. 21

    Linux为什么不在PATH环境中的所有目录中查找该命令?

  22. 22

    我的命令仅在我从终端运行时才有效。当我使用启动器时它不起作用。我该怎么做才能解决这个问题?

  23. 23

    为什么即使索引已关闭,该索引号也仍然有效?

  24. 24

    为什么在for循环中使用此命令复制文件的命令在bash中有效,而在zsh中却无效?

  25. 25

    该命令有什么作用?使用选项查找命令

  26. 26

    该命令中“ -y”的含义是什么

  27. 27

    为什么Windows命令外壳告诉我使用其他命令,然后说该命令不存在?

  28. 28

    命令在命令行上有效,但在批处理文件中失败

  29. 29

    此tar命令在命令行上有效,但在脚本中失败

热门标签

归档