【发布时间】:2014-07-27 18:45:39
【问题描述】:
我尝试创建一个 npm 包,它可以作为 shell 的命令启动。我有package.json
{
"name": "myapp",
"version": "0.0.6",
"dependencies": {
"async": "",
"watch": "",
"node-promise": "",
"rmdir": "",
"should": "",
"websocket": ""
},
"bin": "myapp"
}
和myapp
#!/bin/bash
path=`dirname "$0"`
file="/myapp.js"
node $path$file $1 &
但我得到一个错误:
module.js:340
throw err;
^
Error: Cannot find module '/usr/local/bin/myapp.js'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:902:3
问题是 myapp.js 在另一个目录中。如何从我的脚本中获取此目录名称?或者也许有更好的方法来做到这一点?
【问题讨论】:
-
你为什么不在 cmdline 上给 myapp.js
directory path调用脚本为./scriptname.sh 'directory_path'然后而不是node $path$file $1 &使用node $1/${file},如果你这样做你就不需要path=`dirname "$0"` -
因为这个文件是包的一部分。我希望这个脚本是一个简单的全局命令。
-
您需要将
$0符号链接路径解析为实际文件路径。你看过stackoverflow.com/questions/4774054/…吗? -
是的,我知道,但是我不知道
myapp.js在哪里,它是随包安装的,应该在不同的目录中。问题是如何找到该文件的路径。
标签: javascript node.js bash binary npm