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


当前回答

当我试图在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"

其他回答

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

我,只是为了添加我在Windows上,我通过删除我用户的node_module文件夹中的node-sass条目来解决我的问题(C:/users/$username/node_modules/node_sass)

重建和删除node_sass之前什么都没有做,现在我的问题解决了!

您可能有一个与当前版本不同的节点版本构建。尝试运行这些命令,应该可以解决问题。

npm cache clean --force &&  
rm -rf node_modules &&  
rm -rf package-lock.json &&  
npm i

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

删除“node_modules”文件夹。 重新安装依赖项。(npm)