我正在尝试将一些JS代码作为Node shell脚本执行,但它似乎不起作用,我不知道为什么。这是一个简单的例子:
#!/usr/bin/env node
console.log("foo");
上面的脚本应该导致TextExpander在触发时插入文本“foo”,但事实并非如此。 bash中的等价物与预期的一样:
#!/usr/bin/env bash
echo "foo"
我认为也许对console.log()
的调用并没有产生TextExpander正在寻找的东西(虽然我能找到的所有文档都说应该打印到stdout)。我甚至尝试过这样的解决方法而没有运气:
#!/usr/bin/env sh
echo `/usr/bin/env node -e "console.log(\"foo\");"`
我没有明显的错误或任何迹象表明出现了问题。我最后用TextExpander插入一个空字符串而不是"foo"
。任何TextExpander都认为可能会看到我遗漏的东西?在shell中运行非工作示例工作正常,TextExpander应该只捕获到stdout的任何内容。我甚至不确定如何调试它。
答案 0 :(得分:3)
确保TextExpander将使用的PATH环境变量中列出了安装node
可执行文件的目录。这可能与您在终端中获得的PATH值不同。要验证是否存在问题,请尝试使用#!/full/path/to/node
作为shebang行,而不是运行env
。我的猜测是节点安装在/usr/local/bin/node
或主目录下的某个位置,并且这两个节点都不在TextExpander运行时的PATH中。
答案 1 :(得分:0)
您可能应该在标题中添加-e
:
#!/usr/bin/env node -e
或者
您可能应该在标题中添加-e:
#!/path/to/node -e