我有问题构建一个应用程序,因为node-sass不断失败的错误。

binding /Users/warren/Sites/random-docs/my-cms/node_modules/node-sass/vendor/darwin-x64-11/binding.node出错 Node Sass无法找到当前环境的绑定:OS X 64位的Node 0.10.x

我试过跑步

npm rebuild node-sass

二进制很好;退出。

当运行node -v时,我得到v6.2.2

这与sass错误说的“Node 0.10.x”不同。我不明白为什么它会得到错误的版本。我也尝试删除node_modules文件夹并运行npm update或npm install,这两者都没有解决问题。什么好主意吗?


当前回答

node-sass runs an install script to download the required binary. If there are no environment variables, .npmrc variables or process arguments set then the binary is determined by using the current process platform, architecture and Node ABI version. Therefore, if you run node install in one application and then try to run node-sass in an application with a different platform/architecture/ABI, the binary won't have been downloaded. The solution is to manually download the binary or to fix the binary version using an environment variable (SASS_BINARY_NAME) or a .npmrc variable (sass_binary_name)

你可以在node-sass\lib\extensions.js中的getBinaryPath函数中看到这个逻辑

其他回答

我在从VS 2017专业版升级到企业版时遇到了这个问题

密切与 删除node_modules 开放和 右键单击包。Json,然后选择“restore packages”

在创建AspNetCore应用程序时,我在Visual Studio 2015 Community Edition中遇到了类似的错误:

Node Sass could not find a binding for your current environment: Windows 32-bit with Node.js 5.x
Found bindings for the following environments:
  - Windows 64-bit with Node.js 6.x
This usually happens because your environment has changed since running `npm install`.
Run `npm rebuild node-sass` to build the binding for your current environment.
    at module.exports ([..]\node_modules\node-sass\lib\binding.js:15:13)
    at Object.<anonymous> ([..]\node_modules\node-sass\lib\index.js:14:35)
    at Module._compile (module.js:397:26)
    at Object.Module._extensions..js (module.js:404:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> ([..]\node_modules\gulp-sass\index.js:187:21)
    at Module._compile (module.js:397:26)

您可以从上面的错误中看到,原因是nodejs绑定的版本不匹配。

Node Sass无法找到当前环境的绑定: Windows 32位,带有Node.js 5.x 为以下环境找到绑定: —Windows 64位,Node.js 6.x

我找到的解决办法是

安装windows版本的nodejs, 在外部网络工具中添加节点js (C:\Program Files\nodejs)的路径(参见Rob Scott的回答) 将nodejs路径移到$(path)上方。

检查你的系统:你的系统是否有两个不同的Node.js安装?

如果通过nodejs安装node,默认安装目录为 C:\Program Files\nodejs 我的节点版本是6。Xx安装在这里。

检查VS External web tools目录 C:\Program Files (x86)\Microsoft Visual Studio\2017\企业\Web\External 我的节点版本是5。Xx安装在那里。

一种解决方法是:

备份C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Web\External目录。 复制C:\Program Files\nodejs目录内容和 粘贴到 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Web\外部目录。 从解决方案中删除node_modules目录。 重新运行项目。 如果您得到错误消息,请重新运行项目第二次。

如果这样不行的话

从解决方案中删除node_modules目录。

注意:$是命令提示符

$  npm install 
…
$ npm run build:dev

重新运行项目。

我是一个Windows 8用户,最近将Node更新到v8.11.1,将npm更新到v6.0.0,并面临类似的问题。没有任何工作- npm install -g node-sass@latest或从项目node_modules/中删除node-sass目录-这些都不适合我。

Laravel Mix向我的浏览器控制台抛出一个错误,说缺少一个节点:win32-x64-57。我不知道是不是因为网络连接变慢了还是什么原因,更新的时候节点不见了。

因此,一些答案引导我去研究Node-Sass发行版,我找到了解决方案。

步骤1:使用命令检查你的node-sass版本:npm view node-sass version(步骤4中的{你的版本}) 步骤2:获取Node-Sass版本 步骤3:获得您的版本,并在每个版本下列出的资产中找到缺失的节点,并下载文件 第四步:打开PC的C:\Users\{User}\AppData\Roaming\npm-cache\node-sass\{你的版本}\,将下载的.node文件放在版本文件夹中

这样就做完了。

在我的例子中,node-sass版本是4.9.0,缺少的节点是win32-x64-57_binding。所以我从4.9.0版本下载了.node文件,并执行了步骤4。

我只是运行npm rebuild而不是npm rebuild node-sass,问题就消失了。但我不知道背后的魔力是什么。