我有问题构建一个应用程序,因为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,这两者都没有解决问题。什么好主意吗?


当前回答

我是一个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。

其他回答

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函数中看到这个逻辑

我也遇到过类似的问题,原因是我的机器上安装了两个版本的Node:一个是“全局”版本,另一个是项目级别的版本。 只有在Gulp构建在Node.js 4下运行时,Sass才能正确构建。x版本,因此请确保升级了您正在使用的Node版本。

PS:如果你完全删除项目中的node_modules文件夹并从头开始重新构建,npm将下载当前系统和节点版本的正确依赖项。

对于那些从系统节点切换到nvm的用户,如果您还没有删除~/。NPM和~/。node-gyp文件夹可能会出现此问题,因为可能节点版本在~/。Node-gyp可能不同。

在任何情况下,这些文件夹都应该删除。

这是可能不会发生在其他人身上的事情,但在我的情况下,当我决定重新启动我的项目(遵循不同的vue.js教程)时出现了这个错误。

造成我问题的步骤是:

# move my existing project
mv project-name project-name-old
# create a new project
vue create project-name
# run server
npm run server

问题是我之前的服务器仍然在不同的终端选项卡上运行。在localhost:8080上,仍然显示的页面是旧的项目。

我所要做的就是关闭终端中的旧服务器,并再次执行“npm run serve”(或查看localhost:8081)。

以防这让别人困惑了半个小时,或者是为了搞笑。

删除/node-modules文件夹并重新安装,或者在删除后运行gradle任务deploy

/用户/沃伦/网站/ random-docs / my-cms / node_modules node-sass /供应商/ darwin-x64-11 / binding.node

它解决了你的问题。