에 대한 노드 모듈 해상도를 나누기 /로 myscripf은 다음과 같습니다도우 내가</p> <pre><code>/mymodule --/bin --/myscript --/package.json . . . </code></pre> <p>빈과 같은 구조의 노드 프로젝트가 상대 경로
#!/usr/bin/env node
const mymodule = require('..').mymodule;
것은 내가 일반 사용자 모두로 스크립트를 실행하면 잘 작동합니다. sudo를 사용하여 스크립트를 실행하려고하면 오류로 모듈 해상도가 깨집니다.
module.js:471
throw err;
^
Error: Cannot find module '../'
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/mymodule/bin/myscript)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
sudo로 실행할 때 모듈 확인이 실패하는 이유는 무엇입니까?
무엇 명령은 쉘에서 스크립트를 실행하기 위해 실행하고 있습니까? 거기에 홈 상대 경로를 사용하면 ~을 사용하면 문제가 발생할 수 있습니다. – elem4th
프로젝트 디렉토리에서 bin/myscript를 실행 중입니다. 발사와 관련된 가정 경로가 없습니다. – user3076144