Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 启动Bash和节点_Node.js_Bash_Macos - Fatal编程技术网

Node.js 启动Bash和节点

Node.js 启动Bash和节点,node.js,bash,macos,Node.js,Bash,Macos,我在/Library/LaunchDaemons中注册了一个.plist脚本-在特定IO事件中,该脚本会触发位于/usr/local/bin(root:admin 0755)中的bash脚本 Bash脚本运行nodejs脚本 这是bash脚本: if [[ $(ioreg -p IOUSB | grep Realforce -c) > 0 ]]; then echo "Realforce is present" echo 1 echo $(node ./l

我在/Library/LaunchDaemons中注册了一个.plist脚本-在特定IO事件中,该脚本会触发位于/usr/local/bin(root:admin 0755)中的bash脚本

Bash脚本运行nodejs脚本

这是bash脚本:


if [[ $(ioreg -p IOUSB | grep Realforce -c) > 0 ]]; then
  echo "Realforce is present"
  echo 1
  echo $(node ./lgtvcontrol/TVinputChange.js mac)
  echo 2
else
  echo "Realforce not detected"
fi
当我以root用户身份运行bash脚本时,我得到以下输出:

Realforce is present
1
mac 3166798437680e8a22c7093bf294fbaf connecting connected app com.webos.app.hdmi3
2
Realforce is present
1

2
当bash脚本使用用户名root通过LaunchDaemon运行时,它将获得以下输出:

Realforce is present
1
mac 3166798437680e8a22c7093bf294fbaf connecting connected app com.webos.app.hdmi3
2
Realforce is present
1

2
我不明白为什么LaunchDaemon无法运行节点脚本。对此有什么想法或经验吗

谢谢你


编辑1: 通过向plist添加以下键,我现在能够在节点中获得一个错误

    <dict>
        <key>PATH</key>
        <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin/lgtvcontrol</string>
    </dict>

路径
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin/lgtvcontrol
将节点错误日志输出到文件时,我在执行时得到以下结果:

internal/validators.js:113
    throw new ERR_INVALID_ARG_TYPE(name, 'string', value);
    ^

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type undefined
    at validateString (internal/validators.js:113:11)
    at Object.join (path.js:1039:7)
    at module.exports (/usr/local/bin/lgtvcontrol/node_modules/persist-path/index.js:9:27)
    at new LGTV (/usr/local/bin/lgtvcontrol/index.js:48:16)
    at LGTV (/usr/local/bin/lgtvcontrol/index.js:38:16)
    at Object.<anonymous> (/usr/local/bin/lgtvcontrol/TVinputChange.js:7:33)
    at Module._compile (internal/modules/cjs/loader.js:1121:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1160:10)
    at Module.load (internal/modules/cjs/loader.js:976:32)
    at Function.Module._load (internal/modules/cjs/loader.js:884:14) {
  code: 'ERR_INVALID_ARG_TYPE'
}
internal/validators.js:113
抛出新错误\u无效的\u参数\u类型(名称,'string',值);
^
TypeError[ERR_INVALID_ARG_TYPE]:“path”参数必须是string类型。接收类型未定义
在validateString(internal/validators.js:113:11)
在Object.join(path.js:1039:7)
在module.exports(/usr/local/bin/lgtvcontrol/node_modules/persist path/index.js:9:27)
在新的LGTV(/usr/local/bin/lgtvcontrol/index.js:48:16)
在LGTV(/usr/local/bin/lgtvcontrol/index.js:38:16)
反对。(/usr/local/bin/lgtvcontrol/TVinputChange.js:7:33)
at模块编译(内部/modules/cjs/loader.js:1121:30)
在Object.Module._extensions..js(internal/modules/cjs/loader.js:1160:10)
在Module.load(内部/modules/cjs/loader.js:976:32)
at Function.Module._load(内部/modules/cjs/loader.js:884:14){
代码:“错误\无效\参数\类型”
}

路径
/lgtvcontrol/TVinputChange.js
是否不同?脚本执行时的工作目录是什么?节点调用的退出代码是什么?斯特德有什么事吗?尝试在开始时添加
set-e
,查看是否打印过2。为什么要使用
echo$(node…
而不是直接运行
node…
?请参阅。@cbr我尝试表达完整路径,结果相同-
set-e
结果相同output@GordonDavisson没什么区别,我试着看看是否可以从节点中得到输出,但什么都没有显示