我有问题构建一个应用程序,因为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.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

重新运行项目。

其他回答

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

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

我尝试了上面所有的方法,没有任何效果,我试图将节点版本匹配到node-sass版本,当我决定去node.js官方网站,下载最新的节点版本(目前是v14,我在v12)并安装它。这终于解决了我的问题!你的node-sass版本可能比node.js版本超前。

我也有同样的问题

    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

我已经尝试了所有我能找到的方法。

我注意到那个文件夹有一些奇怪的行为。当我试图从VS终端“cd”到“node_sass”文件夹时,它告诉“文件夹未找到”,但在Finder中看到。

chmod从VS终端找不到文件夹,即使有'sudo'命令。

我已经从本地MacOs终端chmod-ed,刚刚与节点重建。

对我来说,是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>