web-dev-qa-db-ja.com

Gruntが起動しない: ">> ReferenceError:grunt is not defined"

私はNodeJSとGruntを初めて使用し、これを機能させるのに苦労しています。これが私が得るものです:

$> grunt
Loading "Gruntfile.js" tasks...ERROR
>> ReferenceError: grunt is not defined
Warning: Task "default" not found. Use --force to continue.

Aborted due to warnings.

これが私のGruntfileです:

module.exports = function(grunt) {
        grunt.initConfig({
                compass: {
                        dist: {
                                options: {
                                        config: 'config/config.rb'
                                }
                        }
                }
        });
};

grunt.loadNpmTasks('grunt-contrib-compass');

grunt.registerTask('default', 'compass');

そして、これが私のpackage.jsonです:

{
  "name": "tests",
  "version": "0.0.0",
  "description": "Grunt Tests",
  "main": "index.js",
  "devDependencies": {
    "grunt": "~0.4.2",
    "grunt-contrib-compass": "~0.6.0",
    "grunt-contrib-watch": "~0.5.3",
    "grunt-cli": "~0.1.11"
  },
  "scripts": {
    "test": "grunt compass"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/Bertrand31/grunttests.git"
  },
  "keywords": [
    "Grunt",
    "NodeJS",
    "NPM",
    "SASS",
    "Compass"
  ],
  "author": "Bertrand Junqua",
  "license": "GPL",
  "bugs": {
    "url": "https://github.com/Bertrand31/grunttests/issues"
  },
  "homepage": "https://github.com/Bertrand31/grunttests"
}

ああ、私はこれをDebianWheezyで実行しています。

何かアイデアがあれば教えてください。どうもありがとう!

19
Bertrand

gruntが定義されていないスコープからgrunt.loadNpmTasksgrunt.registerTaskを呼び出しています。 module.exports関数内でそれらを呼び出す必要があります。

module.exports = function(grunt) {
    grunt.initConfig({
            compass: {
                    dist: {
                            options: {
                                    config: 'config/config.rb'
                            }
                    }
            }
    });

    // Call these here instead, where the variable grunt is defined.
    grunt.loadNpmTasks('grunt-contrib-compass');

    grunt.registerTask('default', 'compass');
};
39
matth