如何将参数传递给 nodemon(或 node-supervisor)中的可执行文件?

Posted

技术标签:

【中文标题】如何将参数传递给 nodemon(或 node-supervisor)中的可执行文件?【英文标题】:How can I pass arguments to the executable in nodemon (or node-supervisor)? 【发布时间】:2012-02-10 14:01:42 【问题描述】:

节点可以使用这样的调试参数运行

$ node --debug src/file.js

我也可以像这样通过咖啡脚本二进制文件传递该参数

$ coffee --nodejs --debug src/file.coffee

哪个有效。但是当我涉及supervisor 时,事情变得更加困难。运行coffee脚本没问题:

$ supervisor -w src src/file.coffee

但我想调试使用supervisor 运行的咖啡脚本。如何通过supervisor 发送--debug 等参数?我尝试将可执行文件设置为带有如下参数的字符串:

$ supervisor -w src -x "coffee --nodejs --debug" src/server.coffee

这产生了一个无限重复的错误消息

调试:使用 'coffee --nodejs --debug src/server.coffee' 启动子进程 调试:execvp():没有这样的文件或目录

这很奇怪,因为在终端中运行 coffee --nodejs --debug src/server.coffee 有效。

那么如何通过supervisor 发送参数?


编辑:我想扩展我的问题,提到我现在也尝试使用nodemon。似乎nodemon 被认为比node-supervisor 更可取,所以我会接受任何解释在通过nodemon 启动咖啡脚本时如何将--debug 传递给节点进程的答案


编辑:这是nodemon 的输出。显然,参数的传递顺序不同:-(

$ nodemon -w src -x 咖啡 --nodejs --debug src/server.coffee 1 月 15 日 03:41:56 - [nodemon] v0.6.5 1 月 15 日 03:41:56 - [nodemon] 观看:/foo/bar/server/src 1 月 15 日 03:41:56 - [nodemon] 正在运行 --debug 1 月 15 日 03:41:56 - [nodemon] 开始`coffee --debug --nodejs src/server.coffee` 节点.js:201 扔 e; // process.nextTick 错误,或第一次滴答时的 'error' 事件 ^ 错误:无法识别的选项:--debug

【问题讨论】:

这里是新节点。关于为什么 nodemon 比主管更可取的任何细节?我注意到的一件事是,在崩溃之后,并没有疯狂地尝试重新启动。 【参考方案1】:

实际上,这是一个错误:)

捷径:

nodemon --debug -w src src/server.coffee

或者(其中 --nodejs 和 --debug 包含在 exec 中)

nodemon -x "coffee --nodejs --debug" -w src src/server.coffee

或者(看起来比上面更好)

nodemon -x coffee --nodejs --debug -w src src/server.coffee

(全部在 nodemon 0.6.6 上)

【讨论】:

仅作记录,这在我问这个问题的时候不起作用。后来修好了。尽管如此,它现在是正确的【参考方案2】:

您可以将-- 与主管一起使用。不确定这是否适用于 -x 语法:

supervisor -w src -- coffee.js --nodejs --debug src/server.coffee

【讨论】:

这种事情实际上可以使用--exec/-x 语法。例如,以下对我有用:supervisor --watch src/index.js --exec serve -- -n -s build,其中serve 的参数位于-- 之后。【参考方案3】:

从对 supervisor 的快速回顾来看,它似乎将所有参数作为参数传递给脚本本身,因此您需要使用 nodemon。

Nodemon 选择它自己的参数,否则它们会被传递给节点。当前版本保留了js/coffee文件后的参数,js文件前的参数倒序了,试试这个吧。

nodemon -w src -x coffee --debug --nodejs src/server.coffee

当然,您似乎也注意到了这一点:P https://github.com/remy/nodemon/issues/54

所以,是的,订购问题是一个希望得到修复的错误。

【讨论】:

它们的传递顺序不同,请参阅我的最新问题更新。谢谢 已更新。你要打补丁吗?这应该很容易,所以如果不让我知道,我会做的。【参考方案4】:

事实证明,问题在于参数只是以相反的顺序传递。以下作品

$ nodemon --debug --nodejs -w src -x coffee src/server.coffee

我也解决了这个问题,并在 github 上将pull request 发送到the author

【讨论】:

以上是关于如何将参数传递给 nodemon(或 node-supervisor)中的可执行文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何将无限参数和一个或两个参数传递给 JavaScript 函数? [复制]

Omnipay - 如何将“自定义”或“发票”参数传递给 Paypal?

如何将参数传递给无服务器调用本地

如何将三个或多个参数传递给自定义模板标签过滤器 django?

Delphi:如何将列表作为参数传递给SQL查询?

TCL/Expect 相当于 Bash $@ 或如何将参数传递给 TCL/Expect 中的衍生进程