cannot install node-sass therefore cannot install gulp-sass

16,713

Solution 1

This is likely because there are permissions problems with your installation of npm:

  • This page discusses general troubleshooting of these problems with npm. Complete these steps first.

  • This GitHub issue describes someone fixing the exact same issue.

Solution 2

This problem typically happens if you run npm install with sudo earlier. Remove node_modules folder and run npm install without sudo

Solution 3

Try the following if you are on ubuntu:

sudo chown -R $(whoami) ~/.npm

Don't use sudo afterwards

Solution 4

i solved running the following

     sudo npm cache clean -f
     sudo npm install -g n
     sudo n stable
     npm rebuild node-sass

Solution 5

try:

sudo rm -rf node_modules && npm rebuild node-sass && npm i

ref: http://froshgeek.com/fix-npm-error-permission-denied-mkdir-related-to-node-sass-macos/

Share:
16,713
Bruno Melofiro
Author by

Bruno Melofiro

Updated on July 26, 2022

Comments

  • Bruno Melofiro
    Bruno Melofiro almost 2 years

    I'm trying to set up an environment in which I could use a sass compiler with gulp, part of my environment is set up by installing gulp-sass, however, I get an error. After some research, it is apparently because I do not have node-sass. When I try installing node-sass using

    sudo npm install -g node-sass
    

    I get the following error, please note that the error for gulp sass is pretty much identical.

    /usr/bin/node-sass -> /usr/lib/node_modules/node-sass/bin/node-sass
    
    > [email protected] install /usr/lib/node_modules/node-sass
    > node scripts/install.js
    
    Unable to save binary /usr/lib/node_modules/node-sass/vendor/linux-x64-57 : { Error: EACCES: permission denied, mkdir '/usr/lib/node_modules/node-sass/vendor'
        at Object.fs.mkdirSync (fs.js:892:18)
        at sync (/usr/lib/node_modules/node-sass/node_modules/mkdirp/index.js:71:13)
        at Function.sync (/usr/lib/node_modules/node-sass/node_modules/mkdirp/index.js:77:24)
        at checkAndDownloadBinary (/usr/lib/node_modules/node-sass/scripts/install.js:111:11)
        at Object.<anonymous> (/usr/lib/node_modules/node-sass/scripts/install.js:154:1)
        at Module._compile (module.js:624:30)
        at Object.Module._extensions..js (module.js:635:10)
        at Module.load (module.js:545:32)
        at tryModuleLoad (module.js:508:12)
        at Function.Module._load (module.js:500:3)
      errno: -13,
      code: 'EACCES',
      syscall: 'mkdir',
      path: '/usr/lib/node_modules/node-sass/vendor' }
    
    > [email protected] postinstall /usr/lib/node_modules/node-sass
    > node scripts/build.js
    
    Building: /usr/bin/node /usr/lib/node_modules/node-sass/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
    gyp info it worked if it ends with ok
    gyp verb cli [ '/usr/bin/node',
    gyp verb cli   '/usr/lib/node_modules/node-sass/node_modules/node-gyp/bin/node-gyp.js',
    gyp verb cli   'rebuild',
    gyp verb cli   '--verbose',
    gyp verb cli   '--libsass_ext=',
    gyp verb cli   '--libsass_cflags=',
    gyp verb cli   '--libsass_ldflags=',
    gyp verb cli   '--libsass_library=' ]
    gyp info using [email protected]
    gyp info using [email protected] | linux | x64
    gyp verb command rebuild []
    gyp verb command clean []
    gyp verb clean removing "build" directory
    gyp verb command configure []
    gyp verb check python checking for Python executable "python2" in the PATH
    gyp verb `which` succeeded python2 /usr/bin/python2
    gyp verb check python version `/usr/bin/python2 -c "import platform; print(platform.python_version());"` returned: "2.7.12\n"
    gyp verb get node dir no --target version specified, falling back to host node version: 8.7.0
    gyp verb command install [ '8.7.0' ]
    gyp verb install input version string "8.7.0"
    gyp verb install installing version: 8.7.0
    gyp verb install --ensure was passed, so won't reinstall if already installed
    gyp verb install version is already installed, need to check "installVersion"
    gyp verb got "installVersion" 9
    gyp verb needs "installVersion" 9
    gyp verb install version is good
    gyp verb get node dir target node version installed: 8.7.0
    gyp verb build dir attempting to create "build" dir: /usr/lib/node_modules/node-sass/build
    gyp ERR! configure error 
    gyp ERR! stack Error: EACCES: permission denied, mkdir '/usr/lib/node_modules/node-sass/build'
    gyp ERR! System Linux 4.4.0-97-generic
    gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/node-sass/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
    gyp ERR! cwd /usr/lib/node_modules/node-sass
    gyp ERR! node -v v8.7.0
    gyp ERR! node-gyp -v v3.6.2
    gyp ERR! not ok 
    Build failed with error code: 1
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! [email protected] postinstall: `node scripts/build.js`
    npm ERR! Exit status 1
    npm ERR! 
    npm ERR! Failed at the [email protected] postinstall script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     /home/username/.npm/_logs/2017-10-21T00_11_47_487Z-debug.log
    

    From what I can gather, the problem might either have to do with libsass or node itself but I am at a loss for which steps to follow.

    If there are any advice or pointers anyone could give me, I would gladly appreciate it.

    Thank you very much!

  • Bruno Melofiro
    Bruno Melofiro over 6 years
    this was it! Thank you so much!
  • Michael
    Michael almost 6 years
    I had so many problems with my project that came out of nowhere. Things like when I ran ng test I would randomly get ERROR: 'ERROR', TypeError and that's it. I tried deleting node_modules and running npm install but it didn't work. Only when I deleted node_modules, ran your command, and then npm install then ng test fixed my problem.