Node-sass 错误(尝试重新安装)

4

我正在尝试构建一个前端服务器,但是当我运行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?它有生成任何错误/警告吗?在Ubuntu 14.04 x64上,这里的grunt-sass运行良好。 - Bass Jobsen
我刚刚运行了npm install来安装项目依赖项。还有其他需要运行的吗?(我是Web开发新手,之前是Java / Android开发人员) - Shmuel
2个回答

6
我在Debian Linux上使用gulp-sass(与grunt-sass基本相同,但用于gulp...两者都只是对各自工具node-sass的包装器,它是实际SASS编译器libsass的nodejs端口)时遇到了基本上相同的错误。 node-sass项目在他们的README.md中提到,仅包括“流行平台”(显然是Windows / Mac)的二进制文件,您可能需要为其他平台构建。
我能够通过在Debian机器上直接重新运行node-sass的安装和构建脚本来解决问题。以下是大致的步骤:
1. 在Linux机器的命令提示符下,cd到您的项目目录 2. cd到项目源文件中的node-sass目录。 根据您的原始帖子,可能类似于cd node_modules/grunt-sass/node_modules/node-sass 3. node scripts/install.js 4. node scripts/build.js 5. 应该会看到像Binary is fine; exiting.这样的消息。 这将添加正确的node-sass二进制文件,以供运行脚本的平台使用。 6. 再次尝试运行grunt build,希望它能正常工作!

1
这对我来说几乎起作用了,我所要做的就是进入 node_modules/grunt-sass/node_modules/node-sass 并从那里简单地运行 npm install - wranvaud
我运行着Ubuntu,我的问题描述略有不同,但是这篇文章解决了它。 我的问题是:Error: ENOENT: no such file or directory, scandir '<MYPROJECTDIR>/node_modules/node-sass/vendor' 而vendor文件夹和其内容并不存在。 - Dirk Schumacher

4

我刚刚运行了npm install来安装项目依赖项。还有别的我应该运行的吗?(我是一个新手,之前做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时错误仍然存在。这是我得到的确切错误- http://pastebin.com/5arMH4Gr - Shmuel
你救了我的一天!谢谢 @Bass Jobsen - Benjamin RD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接