>

노드 0.8.14가 이미 설치된 새 Ubuntu 12.04 인스턴스에 노드 환경을 설정하려고하는데 npm install 를 실행하려고 할 때 문제가 발생했습니다. . 그래서 npm install 를 시도하면 루트 또는 관리자로 실행해야한다고 말합니다.

Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script'
npm ERR!  { [Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/local/lib/node_modules/coffee-script',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/usr/local/lib/node_modules/coffee-script',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack: 
npm ERR!    [ 'DirWriter._create                 (/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23)',
npm ERR!      '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53',
npm ERR!      'Object.oncomplete (fs.js:297:15)' ] }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

하지만 sudo로 실행하려고하면 다음과 같이 표시됩니다.

npm WARN cannot run in wd PackNodeDev@0.0.1-166 npm install -g coffee-script node-gyp (wd=/home/ubuntu/PackNode)

package.json에는 다음 스크립트가 포함되어 있습니다 :

"scripts": {
    "preinstall": "npm install -g coffee-script node-gyp",
    "start": "node server.js",
    "test": "mocha --require should --compilers coffee:coffee-script --colors"
 },

나머지의 devdependencies는 내 컴퓨터 (Mac)에 제대로 설치했기 때문에 유효합니다. 왜 이런 일이 일어나고 있는지 실마리가 있습니까?


  • 답변 # 1

    문서는 다음과 같이 말합니다 :

    와이즈 비즈 와이즈 비즈  기본 설정은

    If npm was invoked with root privileges, then it will change the uid to the user account or uid specified by the 입니다. . user 설정  루트 권한으로 스크립트를 실행하려면 플래그를 설정하십시오.

    옵션은 :

    <올>

    nobody 실행   unsafe-perm 와 함께  플래그 :

    npm install
    
    

    와이즈 비즈 추가  당신의 --unsafe-perm 에 플래그 :

    [sudo] npm install --unsafe-perm
    
    

    unsafe-perm 를 사용하지 마십시오  스크립트를 사용하여 전역 모듈을 설치하고 별도로 설치 한 다음 일반 package.json 를 실행하십시오.  루트 권한이없는 경우 :

    "config": {
        "unsafe-perm":true
    }
    
    

    <시간>

    관련:

    전역 모듈 설치를위한 packageage.json

  • 답변 # 2

    나를 위해 일한 유일한 것은 preinstall 를 추가하는 것이 었습니다  다음을 포함하는 파일 :

    npm install
    
    

    sudo npm install -g coffee-script node-gyp npm install 에 동일한 구성 추가  효과가 없었습니다.

  • 답변 # 3

    루트 사용자를 사용하여 CentO를 실행하는 개인 서버에 nodejs 앱을 게시하려고 할 때도 같은 문제가 발생했습니다. package.json 파일의 "postinstall": "./node_modules/bower/bin/bower install"에서 동일한 오류가 발생하므로 나에게 도움이되는 유일한 해결책은 두 가지 옵션을 모두 사용하여 오류를 피하는 것입니다.

    1 : bower 설치 명령에 --allow-root 옵션 사용

    .npmrc
    
    

    2 : npm install 명령에 --unsafe-perm 옵션 사용

    unsafe-perm = true
    
    

  • 답변 # 4

    OP 여기,이 질문을 처음 한 이후 노드에 대해 더 많이 배웠습니다. Dmitry의 답변이 매우 도움이되었지만 궁극적으로 올바른 권한을 가진 노드를 설치하는 것이 나에게 도움이되었습니다.

    패키지 관리자를 사용하여 노드를 설치하지 말고 직접 권한을 가진 로컬 디렉토리에 상주하도록 직접 컴파일하는 것이 좋습니다.

    이 기사는이를 수행하는 방법에 대한 매우 명확한 단계별 지침을 제공합니다.

    https://www.digitalocean.com/community/tutorials/how-to-install-an-upstream-version-of-node-js-on-ubuntu-12-04

  • 답변 # 5

    package.json 의 소유권을 변경하여이 문제를 해결했습니다.  그리고 "postinstall": "./node_modules/bower/bin/bower --allow-root install"  이렇게 :

    npm install --unsafe-perm

    이것은 /usr/local 없이 모든 것을 할 수있게 해주었습니다

    ~/Users/user-name

관련 자료

  • 이전 WebStorm이 Jasmine 방법을 인식하도록하려면 어떻게해야합니까?
  • 다음 Xcode 4에서 헤더와 구현 파일을 어떻게 전환합니까?