node-sass插件缺失vendor目录的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node-sass插件缺失vendor目录的问题相关的知识,希望对你有一定的参考价值。

参考技术A Mac重装系统后,原有使用node-sass插件的项目在npm install命令安装完成后,商量好似的统一都报如下错误:

意思是vendor文件不存在,在进入node_modules node-sass目录查看后,确认该文件夹不存在。

尝试了删除package-locl.json和node_modules文件夹重新安装、升级和降级node-sass以及nodejs的版本,问题仍然存在。看来得想其它办法了。

去github上查阅官方的Issues之后发现有不少人遇到过这样的问题,但并没有一个准确的解释是什么原因造成的。个人判断应该是node-sass安装编译过程中自身的问题造成的。

解决方式是安装所有依赖后重新对node-sass插件进行编译就好了:

webpack构建时缺少绑定/myproject/node_modules/node-sass/vendor/linux-x64-57/binding.node

【中文标题】webpack构建时缺少绑定/myproject/node_modules/node-sass/vendor/linux-x64-57/binding.node【英文标题】:Missing binding /myproject/node_modules/node-sass/vendor/linux-x64-57/binding.node while webpack build 【发布时间】:2018-05-01 11:29:03 【问题描述】:

我在构建项目时遇到以下错误。实际上错误说“缺少绑定/myproject/node_modules/node-sass/vendor/linux-x64-57/binding.node”,但我有“缺少绑定/myproject/node_modules/node-sass/vendor/linux-x64-48 /binding.node”。我不知道为什么它没有引用“linux-x64-48”?

错误提示运行npm rebuild node-sass --force,我这样做了,但没有运气。请帮我解决这个问题。

节点版本:v8.9.1

npm:5.5.1

注意:我什至尝试删除整个 node_modules 并重新安装(npm install)它。但仍然出现同样的错误。

ERROR in ./node_modules/css-loader!./node_modules/vue-loader/lib/style-compiler?"vue":true,"id":"data-v-6ef6ca5e","scoped":true,"hasInlineConfig":false!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0&bustCache!./src/components/UserProfile.vue
Module build failed: Error: Missing binding /myproject/node_modules/node-sass/vendor/linux-x64-57/binding.node
Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 8.x

Found bindings for the following environments:
  - Linux 64-bit with Node.js 6.x

This usually happens because your environment has changed since running `npm install`.
Run `npm rebuild node-sass --force` to build the binding for your current environment.
    at module.exports (/myproject/node_modules/node-sass/lib/binding.js:15:13)
    at Object.<anonymous> (/myproject/node_modules/node-sass/lib/index.js:14:35)
    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)
    at Module.require (module.js:579:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/myproject/node_modules/sass-loader/lib/loader.js:3:14)
    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)
    at Module.require (module.js:579:17)
 @ ./node_modules/vue-style-loader!./node_modules/css-loader!./node_modules/vue-loader/lib/style-compiler?"vue":true,"id":"data-v-6ef6ca5e","scoped":true,"hasInlineConfig":false!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0&bustCache!./src/components/MyProfile.vue 4:14-346 13:3-17:5 14:22-354
 @ ./src/components/UserProfile.vue
 @ ./src/router.js
 @ ./src/main.js
 @ multi ./build/dev-client ./src/main.js

ERROR in ./node_modules/css-loader!./node_modules/sass-loader/lib/loader.js!./src/assets/scss/main.scss
Module build failed: Error: Missing binding /myproject/node_modules/node-sass/vendor/linux-x64-57/binding.node
Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 8.x

Found bindings for the following environments:
  - Linux 64-bit with Node.js 6.x

【问题讨论】:

【参考方案1】:

这可能是由于您的机器上的节点版本不匹配而您的应用程序正在等待。 就我而言,在构建 docker 映像时,基本机器上的版本和 docker 映像上的版本不同。

【讨论】:

【参考方案2】:

这通常发生在环境快速变化时(将 sass 文件复制到一个位置到另一个位置) 这将帮助您解决此问题。

npm install

npm rebuild node-sass --force

【讨论】:

【参考方案3】:

此问题已由npm rebuild node-sass、github issue 解决

【讨论】:

以上是关于node-sass插件缺失vendor目录的问题的主要内容,如果未能解决你的问题,请参考以下文章

node-sass下载失败 关于webpack

AWS:EACCES:权限被拒绝,mkdir '/home/react-app/node_modules/node-sass/vendor'

webpack构建时缺少绑定/myproject/node_modules/node-sass/vendor/linux-x64-57/binding.node

gulp/webpack运行sass报错解决方法

node-sass安装失败解决方法

MpVue打包vendor过大问题解决办法