npm 패키지를 만들려고합니다.이 패키지는 쉘에서 명령으로 시작할 수 있습니다. 나는 package.json
npm 패키지의 이진 파일
{
"name": "myapp",
"version": "0.0.6",
"dependencies": {
"async": "",
"watch": "",
"node-promise": "",
"rmdir": "",
"should": "",
"websocket": ""
},
"bin": "myapp"
}
및
#!/bin/bash
path=`dirname "$0"`
file="/myapp.js"
node $path$file $1 &
myapp
을하지만 오류 얻을 :
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'디렉토리 경로'를 주면 안된다. ./scriptname.sh 'directory_path'로 스크립트를 호출하고'node $ path $ file $ 1 '대신'node $ 1/$ {file}'을 사용한다. , 이렇게하면'path = \'dirname "$ 0"\'' – PradyJord
이 필요하지 않을 것입니다.이 파일은 패키지의 일부이기 때문입니다. 그리고이 스크립트를 간단하고 포괄적 인 명령으로 만들고 싶습니다. – ciembor
'$ 0' 심볼릭 링크 경로를 실제 파일 경로로 변환해야합니다. http://stackoverflow.com/questions/4774054/reliable-way-for-a-bash-script-to-get-the-full-path-to-itself를 보셨습니까? – loganfsmyth