【问题标题】:Error when running grunt sass compile task运行 grunt sass 编译任务时出错
【发布时间】:2018-11-21 19:29:59
【问题描述】:

运行 grunt 任务编译 scss 文件时出现以下错误:

Running "watch:sass" (watch) task
Waiting...
>> File "Content\sass\main.scss" changed.
Running "sass:dist" (sass) task
Error: expected "{".
@import "layout";
                ^
  Content\sass\main.scss 4:17  root stylesheet
Warning: Exited with error code 65 Use --force to continue.
Aborted due to warnings.

sass 文件(main.scss)包含一行代码:

@import "layout";

布局文件有几行简单的CSS。

我遇到的问题是,我之前在不同的机器上使用完全相同的代码运行了完全相同的配置,没有失败;问题一定出在这台电脑上。

当我运行 node -v 时,我得到了 v8.11.2。当我运行 npm -v 时,我得到 v5.6.0

我正在运行新安装的 Windows 10,使用 Visual Studio 编写代码并使用命令行运行任务。

有人知道为什么会发生这种情况吗?这是我的 package.json:

{
  "version": "1.0.0",
  "name": "SafeOnlineMVC",
  "private": true,
  "devDependencies": {
    "grunt": "0.4.5",
    "grunt-bower-task": "^0.4.0",
    "grunt-contrib-concat": "^1.0.1",
    "grunt-contrib-jshint": "^1.1.0",
    "grunt-contrib-sass": "^0.9.2",
    "grunt-contrib-uglify": "^2.0.0",
    "grunt-contrib-watch": "^0.6.1"
  }
}

我的 gruntfile.js:

module.exports = function (grunt) {
    grunt.loadNpmTasks("grunt-bower-task");
    grunt.loadNpmTasks("grunt-contrib-watch");
    grunt.loadNpmTasks("grunt-contrib-sass");

    grunt.initConfig({
        sass: {
            dist: {
                options: {
                    style: "compressed"
                },
                files: [
                  {
                      "Content/main.css": "Content/sass/main.scss"
                  }
                ]
            }
        },
        watch: {
            sass: {
                files: ["Content/sass/*.scss"],
                tasks: ["sass"]
            }
        }
    });
};

谢谢。

编辑:主 scss 文件:

@import "_layout";

编辑:布局 scss 文件:

.inner{
    width: 1320px;
    margin: 0 auto;
    padding: 0 20px;
    max-width: 100%;
    box-sizing:border-box;
}

【问题讨论】:

  • 可以发一下main.scsslayout.scss的内容吗?
  • 当然,包括在内。虽然它是基本的。为了以防万一(并相应地更新了主scss),我尝试保存带有和不带下划线的文件
  • 您使用的是全新安装的 npm 模块吗?您可以尝试强制重新安装 grunt-contrib-sass
  • 都是全新安装,是的。强制重新安装 grunt-contrib-sass 不起作用,但我也许可以从头开始重新安装所有内容。感谢您抽出宝贵时间回复。
  • grunt-contrib-sass使用Ruby gem编译sass,你试过直接用gem编译scss吗?只是为了丢弃 gem 或 ruby​​ 问题:在 Content/sass 中运行 sass main.scss main.css

标签: sass gruntjs grunt-contrib-watch


【解决方案1】:

如错误消息所示,您的 css 中有错误。您在选择器名称后缺少一个左大括号。

【讨论】:

  • 不幸的是,事实并非如此。我已经用各种 css 甚至是一个空文件进行了测试。无论我做什么,我仍然遇到同样的问题。但是只要我将文件复制到我的旧开发机器上,它就可以正常编译了。
  • 感谢您发布您的 CSS。确实有错误。
  • 不,这不是错误。测试一下。在选择器和大括号之间不留空格并没有错。
  • 对不起 Seth 但没有 css 错误。如果您阅读我的回复,您会注意到我说我在另一台机器上使用完全相同的 css 不会失败(使用相同的 sass/npm/node 版本)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-16
  • 2020-04-22
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
相关资源
最近更新 更多