【问题标题】:Node-sass error (try reinstalling)Node-sass 错误(尝试重新安装)
【发布时间】:2015-08-03 17:34:01
【问题描述】:

我正在尝试构建一个前端服务器,当我运行 grunt 时,我收到此错误,并建议重新安装 node-sass。

Aborted due to warnings.
dev@ubuntu:~/ideaProjects/web-app$ grunt app:dashboard/dev-dashboard --force
Loading "sass.js" tasks...ERROR
Error: `/home/dev/ideaProjects/web-app/node_modules/grunt-sass/node_modules/node-sass/bin/linux-x64-v8-3.28/binding.node` is missing. 
Try reinstalling `node-sass`?

奇怪的是文件 (binding.node) 确实存在,但它位于名为 'linux-x64-v8-3.14' 而不是 3.28 的文件夹中。我尝试将文件夹命名为 3.14 不起作用。我已经尽我所能来修复这个问题,npm install node-sass,npm update,甚至清理项目并在新版本上运行 npm install。但无济于事。我反复收到此错误。

有没有人看到这个或知道如何解决这个问题?我正在运行 Ubuntu 14.04 x64

谢谢!

【问题讨论】:

  • 您使用哪个命令安装 grunt-sass?它会产生任何错误/警告吗?这里 grunt-sass 在 Ubuntu 14.04 x64 上运行良好
  • 我刚刚运行 npm install 来安装项目依赖项。还有什么我应该运行的吗?(我是 web 开发的新手。我是 java/android 开发人员)

标签: node.js ubuntu sass gruntjs node-sass


【解决方案1】:

我刚刚运行 npm install 来安装项目依赖项。还有什么我应该运行的吗?(我是 Web 开发的新手。我是 java/android >开发人员)

我不这么认为。一个基本的设置,一个项目文件夹:

.
├── Gruntfile.js
├── node_modules
└── sass
    └── main.scss

Gruntfile.js 包含:

module.exports = function (grunt) {

grunt.loadNpmTasks('grunt-sass');

grunt.initConfig({
    sass: {
        options: {
            sourceMap: true
        },
        dist: {
            files: {
                'css/main.css': 'sass/main.scss'
            }
        }
    }
});

grunt.registerTask('default', ['sass']);
}

然后运行:

npm install grunt-sass

现在你应该可以运行了:

grunt

以上输出:

Running "sass:dist" (sass) task

Done, without errors.

注意npm install grunt-sass 命令应输出如下所示的内容,可能与您的错误有关:

/
> node-sass@3.1.2 install /home/testdrive/sassgrunt/node_modules/grunt-sass/node_modules/node-sass
> node scripts/install.js

Binary downloaded and installed at /home/testdrive/sassgrunt/node_modules/grunt-sass/node_modules/node-sass/vendor/linux-x64-14/binding.node

> node-sass@3.1.2 postinstall /home/testdrive/sassgrunt/node_modules/grunt-sass/node_modules/node-sass
> node scripts/build.js

` /home/testdrive/sassgrunt/node_modules/grunt-sass/node_modules/node-sass/vendor/linux-x64-14/binding.node ` exists. 
 testing binary.
Binary is fine; exiting.

【讨论】:

  • 我运行了 npm install grunt-sass 并且输出与您发布的相同,但是当我运行 grunt 时错误仍然存​​在。这是我得到的确切错误 - pastebin.com/5arMH4Gr
  • 你拯救了我的一天!谢谢@Bass Jobsen
【解决方案2】:

我在使用 gulp-sass 的 Debian Linux 上遇到了基本相同的错误(基本上与 grunt-sass 相同,但对于 gulp...两者都只是围绕 node-sass 的相应工具的包装器这是实际 SASS 编译器的 nodejs 端口 libsass)。

node-sass 项目在其README.md 中提到,仅包含“流行平台”(显然是 Windows/Mac)的二进制文件,您可能需要为其他平台构建。

我能够通过直接在 Debian 机器上显式地重新运行 node-sass 的安装和构建脚本来解决该问题。大致步骤如下:

  • 从您的 linux 机器上的命令提示符,cd 到您的项目目录
  • cd 到项目源中的 node-sass 目录。根据您的原始帖子,可能类似于cd node_modules/grunt-sass/node_modules/node-sass
  • node scripts/install.js
  • node scripts/build.js
  • 应该看到类似Binary is fine; exiting. 的消息。这将为运行脚本的平台添加正确的 node-sass 二进制文件。
  • 尝试再次运行您的 grunt 构建,希望它能正常工作!

【讨论】:

  • 这几乎对我有用,我所要做的就是输入 node_modules/grunt-sass/node_modules/node-sass 并从那里简单地运行 npm install
  • 我运行了一个 ubuntu,我的问题描述略有不同,但这篇文章解决了它。我遇到的问题:Error: ENOENT: no such file or directory, scandir '<MYPROJECTDIR>/node_modules/node-sass/vendor' 并且供应商文件夹和内容不存在。