如何将参数传递给 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?