我有问题构建一个应用程序,因为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,这两者都没有解决问题。什么好主意吗?
我也有同样的问题
throw new Error(errors.missingBinary());
^
Error: Missing binding /path/to/project/node_modules/node-sass/vendor/linux-x64-47/binding.node
Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 5.x
Found bindings for the following environments:
- Linux 64-bit with Node 0.10.x
- Linux 64-bit with Node.js 5.x
这是因为我用不同的nodejs版本安装了npm,
尝试删除node_modules文件夹安装和启动
cd your_project
rm -rf node_modules
npm install
npm start or gulp or whatever
如果你正在使用nvm do
nvm use stable // or your favorite version
// remove node_module directory
npm install
npm start or gulp or whatever
我在Windows环境中遇到了同样的问题,收到以下错误:
C:\Development{ProjectName}\node_modules\node-sass\vendor\win32-ia32-47\binding.node
Node Sass无法找到当前环境的绑定:Windows 32位,带有Node.js 5.x
为以下环境找到绑定:
—Windows 64位,Node.js 6.x
这里其他答案中列出的npm命令(npm install, npm rebuild node-sass等)都不起作用。
相反,我必须下载缺失的绑定,并将其放在适当的目标文件夹中。
可以在git上找到绑定。将该文件与错误消息中/node_modules/node-sass/vendor/后面标识的文件夹名匹配(在您的示例中是'darwin-x64-11',因此您需要darwin-x64-11_binding. xml文件)。节点文件)。
在项目中创建缺少的文件夹(/node_modules/node-sass/vendor/darwin-x64-11),将.node文件复制到新目录,并将其重命名为binding.node。
Node-sass发布URL:
https://github.com/sass/node-sass/releases
对于使用Visual Studio的用户:
目前正在为VS 2015, 2017, 2019, 2022工作(通过下面和/或这篇文章的回复)
任务运行器资源管理器无法加载任务
VS 2015
转到:工具>选项>项目和解决方案>外部Web工具
VS 2017(.3), VS 2019和VS 2022
>选项>项目和解决方案> Web包管理>外部Web工具(每个@nothrow)
在VS 2017, 2019, 2022,你还需要把$(PATH)放在$(VSINSTALLERDIR)\Web\External上面
重新排序,使$(PATH)在$(DevEnvDir)\Extensions\Microsoft\Web Tools\External之上
删除node_modules并运行npm install和npm rebuild node-sass没有任何作用。
在创建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-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.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
重新运行项目。
**只需执行:** npm rebuild node-sass——force
If the above for some reason didn't work out for you, try this:
删除“node_modules”下的“node-sass”文件夹
npm安装
在我的例子中,它也找不到Python。
以下步骤解决了该问题(Windows):
npm rebuild node-sass --force
-- cannot find python.exe, if you have Python installed, add it to your path:
set PYTHON=C:\Python27\Python.exe
-- else: download python "Windows x86-64-MSI" installer from https://www.python.org/downloads/release/python-2714/
-- install python
-- at installation start check: add env variable to path
-- after successfull installation:
npm rebuild node-sass --force
-- finished successfully
我是一个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重建node-sass——force
或者,如果你在容器中使用node-sass:
Docker exec <container-id> NPM rebuild node-sass——force
当node-sass没有当前操作系统的正确绑定时,会发生此错误。
如果你使用Docker,当你将node_modules直接添加到Dockerfile中的容器文件系统(或使用Docker卷挂载它们)时,通常会发生这种错误。
容器体系结构可能与当前的操作系统不同。例如,我在macOS上安装node-sass,但我的容器运行Ubuntu。
如果强制node-sass从容器内部重新构建,node-sass将下载容器操作系统的正确绑定。
查看我的复制案例了解更多。
对我来说,是maven-war-plugin对文件应用了过滤器,损坏了woff文件。
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>dist</directory>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
真正删除<过滤> < /过滤>
或者如果你需要过滤,你可以这样做:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>dist</directory>
<excludes>
<exclude>assets/**/*</exclude>
</excludes>
<filtering>true</filtering>
</resource>
<resource>
<directory>dist</directory>
<includes>
<include>assets/**/*</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
就我的具体情况而言,上述答案都不起作用。那么它的工作原理是:
rm -rf node_modules
rm -rf /tmp/*
rm -rf /root/.npm/node-sass
npm uninstall --save node-sass
npm cache clean --force
NPM缓存验证检查缓存中是否没有剩余内容
npm install
虽然我没有试图重现序列,但这是上述工作的组合。
此外,你还可以尝试:
NPM install node-sass或NPM install node-sass -g
npm rebuild node-sass
npm install bindings
node-sass节点模块使用依赖于节点版本的达尔文二进制文件。没有下载二进制文件或下载了错误的二进制文件时,会出现此问题。
[![节点sass错误][1]][1].
重新安装节点模块将下载node-sass的二进制文件:-
Mac用户:
rm -rf node_modules
npm cache clean --force
npm i
npm rebuild node-sass --force
Windows用户:
rmdir node_modules
npm cache clean --force
npm i
npm rebuild node-sass --force
但是对于某些用户,您需要检查您的节点版本与node-sass版本的兼容性。使用下面的表使其兼容,并再次运行以上命令来修复此问题。
这是node-sass的节点兼容性表
NodeJS | Supported node-sass version | Node Module
Node 17 7.0+ 102
Node 16 6.0+ 93
Node 15 5.0+ 88
Node 14 4.14+ 83
Node 13 4.13+, <5.0 79
Node 12 4.12+ 72
Node 11 4.10+, <5.0 67
Node 10 4.9+, <6.0 64
Node 8 4.5.3+, <5.0 57
Node <8 <5.0 <57
如果问题仍未解决,请检查node-sass支持的环境列表:—https://github.com/sass/node-sass/releases/
我能解决的问题
NPM install -global -production windows-build-tools
NPM install——msvs_version=2015
" devDependencies ": {
:“babel-core ^ 6.26.0”,
:“babel-loader ^ 7.1.4”,
:“babel-plugin-transform-decorators-legacy ^ 1.3.5”,
:“babel-preset-env ^ 1.6.1”,
:“babel-preset-react ^ 6.24.1”,
:“babel-preset-stage-2 ^ 6.24.1”,
:“css-loader ^ 0.28.11”,
:“mini-css-extract-plugin ^ 0.4.0”,
:“node-sass ^ 4.11.0”,
:“sass-loader ^ 6.0.7”,
4.4.1“webpack”:“^”,
:“webpack-cli 3.1.0”,
:“webpack-dev-server ^ 3.1.1”
}
除了Abdelsalam Megahed的简短回答,其中包含了大部分解决方案……(也就是说,先看他的答案,然后做这件事)
在遵循Abdelsalam建议的四个简短步骤之后,我运行npm run dev并收到以下消息:
Failed to load C:\path\tsconfig.json: Missing baseUrl in compilerOptions
最后一步是编辑tsconfig。在"compilerOptions":下添加"baseURL": ".",像这样:
"compilerOptions": {
"baseUrl": ".",
etc etc etc
问题到这里就解决了。
注意:可能需要硬重置CtrlF5页面来查看更改(即使没有恶魔)。
当我试图在MacOS上的docker中使用node-sass时,我得到了这个错误,这里的解决方案都不起作用。
发生错误是因为我在试图构建docker镜像之前进行了npm安装。npm安装正确地将node-sass的MacOS版本拉到我的node_modules中,然后我将node_modules复制到运行Linux的docker镜像中。这个失败是因为它不能在Linux上运行node-sass的MacOS版本。
在我的情况下,解决方案是在npm安装步骤后添加这个到我的makefile:
docker-compose run --rm --entrypoint "bash -c" mydockerimage "npm rebuild node-sass"
我在本地运行Docker中的一个构建时,使用一个节点alpine映像,很长一段时间都有这个问题。我用下面的代码来创建基础层:
FROM node:19.4-alpine3.17 AS node_base
RUN apk update && \
apk add python3 make && \
rm -rf /var/cache/apk/*
它缺少了一个包:g++。把上面的改为下面的,对我来说很管用:
FROM node:19.4-alpine3.17 AS node_base
RUN apk update && \
apk add python3 make g++ && \
rm -rf /var/cache/apk/*
我相信这与带有M1芯片的macbook PRO的架构有关,在其他机器上我不会遇到这个错误,但我还没有测试过。