无法安装node-sass因此无法安装gulp-sass

时间:2017-10-21 00:40:54

标签: node.js linux github npm sass

我正在尝试建立一个可以使用gulp的sass编译器的环境,我的环境的一部分是通过安装gulp-sass来设置的,但是,我收到了一个错误。经过一番研究,显然是因为我没有节点。当我尝试使用

安装node-sass时
sudo npm install -g node-sass

我收到以下错误,请注意gulp sass的错误非常相同。

/usr/bin/node-sass -> /usr/lib/node_modules/node-sass/bin/node-sass

> node-sass@4.5.3 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' }

> node-sass@4.5.3 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 node-gyp@3.6.2
gyp info using node@8.7.0 | 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! node-sass@4.5.3 postinstall: `node scripts/build.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the node-sass@4.5.3 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

从我可以收集的内容来看,问题可能与libsass或节点本身有关,但我不知道要遵循哪些步骤。

如果有任何建议或指示,任何人都可以给我,我很乐意欣赏它。

非常感谢!

9 个答案:

答案 0 :(得分:9)

如果您之前使用sudo运行npm install,则通常会发生此问题。 删除node_modules文件夹并运行不带sudo的npm install

答案 1 :(得分:7)

这可能是因为您安装npm

存在权限问题
  • This page讨论npm对这些问题的一般故障排除。首先完成这些步骤。

  • This GitHub issue描述了解决完全相同问题的人。

答案 2 :(得分:6)

如果您使用的是ubuntu,请尝试以下操作:

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

之后不要使用sudo

答案 3 :(得分:4)

尝试:

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

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

答案 4 :(得分:3)

我解决了以下问题

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

答案 5 :(得分:0)

我有同样的错误信息。就我而言,这是因为我使用了sudo和non-sudo命令来安装节点模块,因此您不应该这样做。 删除节点模块文件夹。 运行npm install(没有sudo) 运行sudo npm update 就是这样,您可以运行npm start。 希望它能对某人有所帮助。

答案 6 :(得分:0)

我在macos系统中遇到了同样的问题。我删除了node_modules文件夹并重新使用了不带sudo的npm install来成功解决此问题。

答案 7 :(得分:0)

尝试一下

sudo rm -rf node_modules/

sudo npm install --unsafe-perm -g node-sass

sudo npm i

  

unsafe-perm标志设置为true以在运行软件包脚本时禁止UID / GID(用户标识符/组标识符)切换。该标志显式设置为false以防止非root用户安装软件包。如果以root身份运行,则值为false;否则为true。如果在安装node-saas时发生EACCESS错误,则通过sudo运行安装并将unsafe-perm标志设置为true将安装该软件包。

答案 8 :(得分:0)

您可以尝试使用此命令

sudo npm install -g --unsafe-perm node-sass