首页 文章

Node Sass找不到当前环境的绑定

提问于
浏览
289

我在构建应用程序时遇到问题,因为node-sass因错误而失败 .

错误绑定中的错误/Users/warren/Sites/random-docs/my-cms/node_modules/node-sass/vendor/darwin-x64-11/binding.node Node Sass找不到当前环境的绑定:操作系统X 64位,节点0.10.x

我试过跑步

npm rebuild node-sass

这说

二进制很好;退出 .

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

这与sass错误“Node 0.10.x”的内容不同 . 我无法弄清楚为什么它会得到错误的版本 . 我还尝试删除node_modules文件夹并运行npm update或npm install,这两个文件都没有解决问题 . 有任何想法吗?

30 回答

  • 48

    我在Node v7.4.0 Current(最新功能)上遇到了同样的问题 .

    有人在这里阅读并将Node降级到v6.9.4 LTS并在运行 npm rebuild node-sass 之后下载了二进制文件,一切都开始工作了 .

    从https://github.com/sass/node-sass/releases/download/v3.13.1/win32-x64-48_binding.node下载二进制文件 . 下载完成 . ] - :二进制保存到D:\ xxx \ xxx-xxx \ node_modules \ node-sass \ vendor \ win32-x64-48 \ binding.node将二进制文件缓存到C:\ Users \ user \ AppData \ Roaming \ npm-cache \ node-sass \ 3.13.1 \ win32-x64-48_binding . node`

  • 0

    我只是运行npm rebuild而不是npm rebuild node-sass并且问题已经消失了......我不知道背后的魔力是什么 .

  • 1

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

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

  • 1

    我必须先选择新的默认节点版本 nvm use ***nvm install *** ,然后再删除项目中的所有node_modules和 npm i .

  • 219

    我在Windows环境中遇到同样的问题,收到以下错误:

    错误:缺少绑定C:\ Development \ node_modules \ node-sass \ vendor \ win32-ia32-47 \ binding.node节点Sass找不到当前环境的绑定:Windows 32位与Node.js 5.x找到以下环境的绑定: - 带有Node.js 6.x的Windows 64位

    此处的其他答案( npm installnpm rebuild node-sass 等)中列出的 npm 命令均无效 .

    相反,我必须下载缺少的绑定并将其放在适当的目标文件夹中 .

    可以找到绑定on git . 将文件与错误消息中 /node_modules/node-sass/vendor/ 之后标识的文件夹名称匹配(在您的情况下为'darwin-x64-11',因此您需要 darwin-x64-11_binding.node 文件) .

    在项目中创建缺少的文件夹( /node_modules/node-sass/vendor/darwin-x64-11 ),将 .node 文件复制到新目录,并将其重命名为 binding.node .

    Node-sass发布网址:https://github.com/sass/node-sass/releases

  • 1

    node-sass运行安装脚本以下载所需的二进制文件 . 如果没有环境变量,.npmrc变量或进程参数集,则使用当前进程平台,体系结构和Node ABI版本确定二进制文件 . 因此,如果在一个应用程序中运行节点安装,然后尝试在具有不同平台/体系结构/ ABI的应用程序中运行node-sass,则不会下载二进制文件 . 解决方案是手动下载二进制文件或使用环境变量(SASS_BINARY_NAME)或.npmrc变量(sass_binary_name)修复二进制版本

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

  • 16

    还要记得将xxx.node文件(在我的情况下为win32-x64-51)重命名为binding.node并粘贴到xxx文件夹中(在我的情况下为win32-x64-51),

  • 0

    尝试添加后缀--force

    npm rebuild node-sass --force
    
  • 7

    对于从系统节点切换到nvm的人,如果您没有删除 ~/.npm~/.node-gyp 文件夹,则可能会出现此问题,因为 ~/.node-gyp 中的节点版本可能不同 .

    在任何情况下,应删除这些文件夹 .

  • 1

    执行 npm rebuild node-sass --force ,这应该可以解决问题 .


    在我的情况下,它也找不到 Python .

    Following procedure solved the issue (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
    
  • 0

    修复

    npm rebuild node-sass --force

    或者,如果您在容器中使用node-sass:

    docker exec <container-id> npm rebuild node-sass --force

    解释

    当node-sass没有正确的当前操作系统绑定时,会发生此错误 .

    根据我的经验,当您将 node_modules 直接添加到Dockerfile中的容器文件系统(或者使用Docker卷安装它们)时,通常会发生这种情况 . 这是因为您的容器体系结构通常与您当前的操作系统不同 . 例如,我在macOS上安装了node-sass,但我的容器运行的是Ubuntu .

    如果强制node-sass从容器内重建,node-sass将为容器操作系统下载正确的绑定 .

    请参阅my repro case了解更多信息 .

  • 1

    对于我的特殊情况,上述答案都没有奏效 . 它的作用是什么:

    rm -rf node_modules 
    rm -rf /tmp/* 
    rm -rf /root/.npm/node-sass 
    npm uninstall --save node-sass 
    npm cache clean --force
    

    npm cache verify 检查缓存中是否有任何内容

    npm install
    

    尽管如此,我还没有尝试重现序列,它是上述组合的工作原理 . 此外,您还可以尝试:

    npm install --save node-sassnpm install node-sass -g

    npm rebuild node-sass
    npm install bindings
    
  • 7

    我遇到过同样的问题 . 我在这里找不到合适的工作方案,所以我找到了我的:

    受@ Rob-Scott解决方案的启发和其他指示我们可以安装2个版本的Node.js,我去了 C:\Program Files (x86)\nodejs 并意识到除了VS默认安装之外我还安装了node.js版本 .

    我的解决方案非常简单:

    • 转到工具>选项>项目和解决方案> Web包管理>外部Web工具

    • 点击 add an entry (右上方按钮块的最左侧)

    • 输入 C:\Program Files (x86)\nodejs ,按 enter 进行验证

    • 将其置于列表顶部

    • 享受

    可能Node.js在PATH变量中设置得不好,但这是我工作的非常快速的解决方案,我的2美分:)

  • 449

    对我来说,maven-war-plugin将过滤器应用于文件并破坏了woff文件 .

    <plugin>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <webResources>
            <resource>
                <directory>dist</directory>
                <filtering>true</filtering>
            </resource>
        </webResources>
    </configuration>
    

    删除<filtering> true </ filtering>

    或者,如果您需要过滤,您可以执行以下操作:

    <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>
    
  • 12

    对我来说问题是Task Runner Explorer的目标是我的项目的解决方案 . 当我使用下拉列表更改为项目本身时,在Task Runner Explorer刷新按钮旁边,它显示了相关任务 .

  • 0

    当您在工作站中运行Node.js更新并且全局使用node-sass时会发生这种情况 .

    所以你应该全局卸载node-sass

    npm uninstall -g node-sass
    

    然后你必须再次全局安装它

    npm install -g node-sass
    
  • 2

    我在创建AspNetCore应用程序时遇到的类似错误是Visual Studio 2015社区版:

    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绑定的版本不匹配 .

    节点Sass无法找到当前环境的绑定:Windows 32位与Node.js 5.x找到以下环境的绑定: - Windows 64位与Node.js 6.x

    我发现的解决方案是

    • 安装nodejs windows version

    • 在外部Web工具中添加节点js的路径(C:\ Program Files \ nodejs)(参见Rob Scott的回答),

    • 将nodejs路径移到$(PATH)上方 .

  • 3

    这通常是因为自运行 npm install 后环境发生了变化 . 运行 npm rebuild node-sass 为当前环境构建绑定 .

  • 0

    从VS 2017 Professional升级到Enterprise时遇到此问题

    • 关闭VS.

    • 删除node_modules

    • 打开VS.

    • 右键单击package.json并选择'restore packages'

  • 1

    对于Visual Studio 2015/2017,右键单击 package.json 并单击“还原包” .

    这将确保运行Visual Studio Tools外部工具中的npm,并基于此重建绑定 .

  • 0

    我是Windows 8用户,最近更新了Node到 v8.11.1 和npm到 v6.0.0 并遇到了类似的问题 . 没有任何工作 - npm install -g node-sass@latest 或从项目中删除 node-sass 目录 node_modules/ - 没有一个为我工作 .

    Laravel Mix向我的浏览器控制台抛出一个错误,说错过了一个节点: win32-x64-57 . 我不喜欢't know whether it',因为互联网连接速度较慢,更新期间节点丢失了 .

    因此,一些答案指示我查看Node-Sass版本,我找到了解决方案 .

    • Step 1: 使用以下命令检查node-sass版本: npm view node-sass version (步骤4中的 {your version}

    • Step 2: 获取Node-Sass Releases

    • Step 3: 获取您的版本并在每个版本下列出的资产中找到缺少的节点,并下载该文件

    • Step 4: 访问您的PC C:\Users\{User}\AppData\Roaming\npm-cache\node-sass\{your version}\ 并将下载的 .node 文件放在版本文件夹中

    你完成了 .

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

  • 77

    在构建docker镜像并尝试在本地运行时,我遇到了同样的问题 . 您需要添加.dockerignore文件,其中包含以下内容: .DS_Store .git .gitignore .idea log/* target tmp node_modules client/node_modules spec/internal/public/assets public/assets

  • 0

    在某些情况下,您需要卸载并安装node-sass库 . 尝试:

    npm uninstall --save node-sass
    

    npm install --save node-sass
    

    看看这对我的工作,Stack link here

  • 15

    I had the same problem

    您的gulpfile中存在错误:错误:缺少绑定E:\ allapp \ badshaindiancuisine \ node_module \ node-sass \ vendor \ win32-x64-46 \ binding.node节点Sass找不到当前环境的绑定:Windows 64位与Node.js 4.x找到以下环境的绑定: - OS X 64位与Node.js 4.x

    How to solve my problem

    进入项目文件夹直到node-sass文件夹的位置,然后执行:

    npm rebuild node-sass
    
  • 0

    我有同样的问题

    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
    

    那是因为我做了npm使用不同的nodejs版本安装,尝试删除node_modules文件夹安装和启动

    cd your_proyect
    rm -rf node_modules
    npm install
    npm start or gulp or whatever
    

    如果你正在使用nvm做

    nvm use stable // or your favorite version
    // remove node_module directory
    npm install
    npm start or gulp or whatever
    
  • 0

    为我工作:

    只需删除 node-sass 文件夹并运行 npm install 即可 .

  • 0

    回答@ core114建议再次卸载和安装 sass 包适用于手动过程但是对于 automated deployment/CI/CD 你需要更通用的方法 . 对我来说有用的是Continuos部署不同的环境是:

    • 在部署之前使用 rimraf 删除旧的 node_modules

    rimraf node_modules

    • 在npm package.json 中更新 sass 包并提交源代码管理 .

    对于下一次部署,它将自动刷新所有环境的sass .

  • 98

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

    如果从nodejs安装节点,则默认安装目录为 C:\Program Files\nodejs 我在此处安装了节点版本6.xx .

    检查您的VS外部Web工具目录 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\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\External 目录中 .

    • 从解决方案中删除 node_modules 目录 .

    • 重新运行项目 . 如果收到错误消息,请重新运行该项目 .

    如果这不起作用

    • 从解决方案中删除 node_modules 目录 .

    注意:$是命令提示符

    $  npm install 
    …
    $ npm run build:dev
    

    重新运行该项目 .

  • 4

    注意我使用的是VS 2015,64位Windows 7 .

    Also works for VS 2017 (from replies to this post)

    Task Runner Explorer can't load tasks

    For VS 2015

    • 转到:工具>选项>项目和解决方案>外部Web工具

    For VS 2017(.3)

    • 工具>选项>项目和解决方案> Web包管理>外部Web工具(每个@nothrow)

    在VS 2017中,您还需要将$(PATH)放在$(VSINSTALLERDIR)\ Web \ External之上


    • 重新排序,以便$(PATH)高于$(DevEnvDir)\ Extensions \ Microsoft \ Web Tools \ External

    enter image description here


    删除 node_modules 并运行 npm install 然后 npm rebuild node-sass did nothing .

  • 13

    这对我有用,删除 node_modules ,然后从IDE恢复包,然后 npm rebuild node-sass

相关问题