无法在我的 React 项目中使用 npm 添加节点-sass 我正在开发我的 mac

Cannot add node-sass using npm in my react project I am development on my mac

我正在使用 webpack 作为我的 react 应用程序的加载程序。 node-sass 是我正在使用的装载机之一。我的操作系统是 Mac OSX High Sierra。我目前正在使用 node v8.9.3。我无法使用 npm 安装它,但可以使用 yarn。这是我使用 npm 时的结果:

Unable to save binary /Users/user/Documents/react/react.js-essential-training/node_modules/node-sass/vendor/darwin-x64-57 : { Error:
EACCES: permission denied, mkdir '/Users/user/Documents/react/react.js-essential-training/node_modules/node-sass/vendor'
at Object.fs.mkdirSync (fs.js:885:18)
at sync (/Users/user/Documents/react/react.js-essential-training/node_modules/mkdirp/index.js:71:13)
at Function.sync (/Users/user/Documents/react/react.js-essential-training/node_modules/mkdirp/index.js:77:24)
at checkAndDownloadBinary (/Users/user/Documents/react/react.js-essential-training/node_modules/node-sass/scripts/install.js:111
:11)
at Object.<anonymous> (/Users/user/Documents/react/react.js-essential-training/node_modules/node-sass/scripts/install.js:154:1)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
errno: -13,
code: 'EACCES',
syscall: 'mkdir',
path: '/Users/user/Documents/react/react.js-essential-training/node_modules/node-sass/vendor' }

> node-sass@4.7.2 postinstall /Users/user/Documents/react/react.js-essential-training/node_modules/node-sass
> node scripts/build.js

Building: /Users/user/.nvm/versions/node/v8.9.3/bin/node /Users/user/Documents/react/react.js-essential-training/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 [ '/Users/user/.nvm/versions/node/v8.9.3/bin/node',
gyp verb cli   '/Users/user/Documents/react/react.js-essential-training/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.9.3 | darwin | 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` failed Error: not found: python2
gyp verb `which` failed     at getNotFoundError (/Users/user/Documents/react/react.js-essential-training/node_modules/which/which.js:13:12)
gyp verb `which` failed     at F (/Users/user/Documents/react/react.js-essential-training/node_modules/which/which.js:68:19)
gyp verb `which` failed     at E (/Users/user/Documents/react/react.js-essential-training/node_modules/which/which.js:80:29)
gyp verb `which` failed     at /Users/user/Documents/react/react.js-essential-training/node_modules/which/which.js:89:16
gyp verb `which` failed     at /Users/user/Documents/react/react.js-essential-training/node_modules/isexe/index.js:42:5
gyp verb `which` failed     at /Users/user/Documents/react/react.js-essential-training/node_modules/isexe/mode.js:8:5
gyp verb `which` failed     at FSReqWrap.oncomplete (fs.js:152:21)
gyp verb `which` failed  python2 { Error: not found: python2
gyp verb `which` failed     at getNotFoundError (/Users/user/Documents/react/react.js-essential-training/node_modules/which/which.js:13:12)
gyp verb `which` failed     at F (/Users/user/Documents/react/react.js-essential-training/node_modules/which/which.js:68:19)
gyp verb `which` failed     at E (/Users/user/Documents/react/react.js-essential-training/node_modules/which/which.js:80:29)
gyp verb `which` failed     at /Users/user/Documents/react/react.js-essential-training/node_modules/which/which.js:89:16
gyp verb `which` failed     at /Users/user/Documents/react/react.js-essential-training/node_modules/isexe/index.js:42:5
gyp verb `which` failed     at /Users/user/Documents/react/react.js-essential-training/node_modules/isexe/mode.js:8:5
gyp verb `which` failed     at FSReqWrap.oncomplete (fs.js:152:21)
gyp verb `which` failed   stack: 'Error: not found: python2\n    at getNotFoundError (/Users/user/Documents/react/react.js-essential-training/node_modules/which/which.js:13:12)\n    at F (/Users/user/Documents/react/react.js-essential-training/node_modules/which/which.js:68:19)\n    at E (/Users/user/Documents/react/react.js-essential-training/node_modules/which/which.js:80:29)\n    at /Users/user/Documents/react/react.js-essential-training/node_modules/which/which.js:89:16\n    at /Users/user/Documents/react/react.js-essential-training/node_modules/isexe/index.js:42:5\n    at /Users/user/Documents/react/react.js-essential-training/node_modules/isexe/mode.js:8:5\n    at FSReqWrap.oncomplete (fs.js:152:21)',
gyp verb `which` failed   code: 'ENOENT' }
gyp verb check python checking for Python executable "python" in the PATH
gyp verb `which` succeeded python /usr/bin/python
gyp verb check python version `/usr/bin/python -c "import platform; print(platform.python_version());"` returned: "2.7.10\n"
gyp verb get node dir no --target version specified, falling back to host node version: 8.9.3
gyp verb command install [ '8.9.3' ]
gyp verb install input version string "8.9.3"
gyp verb install installing version: 8.9.3
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.9.3
gyp verb build dir attempting to create "build" dir: /Users/user/Documents/react/react.js-essential-training/node_modules/node-sass/build
gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir '/Users/user/Documents/react/react.js-essential-training/node_modules/node-sass/build'
gyp ERR! System Darwin 17.3.0
gyp ERR! command "/Users/user/.nvm/versions/node/v8.9.3/bin/node" "/Users/user/Documents/react/react.js-essential-training/node_modules/node-
gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd /Users/user/Documents/react/react.js-essential-training/node_modules/node-sass
gyp ERR! node -v v8.9.3
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
Build failed with error code: 1
npm WARN react-essential@1.0.0 No repository field.

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! node-sass@4.7.2 postinstall: `node scripts/build.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the node-sass@4.7.2 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!     /Users/user/.npm/_logs/2017-12-26T06_42_24_432Z-debug.log

之所以这很重要,是因为在我使用 yarn 安装 node-sass 之后,如果我使用 npm 更新我的项目,node-sass 包将被删除。

有时安装 node-sass 的二进制文件会出现问题,您需要为您的架构重建它。但是,我看到了这样的错误,并通过清理包的缓存自动修复:

npm cache clean

yarn cache clean

在运行这个命令之后,尝试再次安装你的依赖项,如果错误仍然存​​在尝试强制构建节点-sass包

npm rebuild node-sass --force

yarn add node-sass --force