【问题标题】:RequireJS, Jasmine and Grunt Error: scripterror: Illegal path or script errorRequireJS、Jasmine 和 Grunt 错误:scripterror: Illegal path or script error
【发布时间】:2014-12-15 22:46:13
【问题描述】:

我有一个使用 requireJS 的应用程序,我想使用 grunt-contrib-jasmie 来测试它。为了让 jasmine 与 require 一起工作,我正在使用 cloudchen 的 grunt-template-jasmine-requirejs。该应用程序具有以下目录结构:

topLevelApplicationFolder    
|_app.html
|_Gruntfile.js
|_package.json
|_js
  |_app.js
  |_app
    |_modules
      |_rgbaHelpers.js
      |_main.js
   |_lib
     |_require.js
|_spec
  |_rgba_spec.js

app.js 是我的 requireJS 配置文件:

requirejs.config({
    baseUrl: "js/lib",
    paths: {
      app: "../app"
    },
    shim: {
        spectrum: {
            deps: ["jquery"],
            exports: "spectrum"
        }
    }
});

// Load the main app module to start the app
requirejs(["app/main"]);

我的 Gruntfile.js 如下:

module.exports = function(grunt) {

// Project configuration.
grunt.initConfig({
    jasmine : {
        taskName: {
            src : 'js/**/*.js',
            options : {
                specs : 'spec/**/*.js',
                template: require('grunt-template-jasmine-requirejs'),
                templateOptions: {
                    requireConfig: {
                        baseUrl: 'js/lib'
                    }
                // requireConfigFile: './js/app.js'
                }
            }
        }
    },
    jshint: {
        all: [
            'Gruntfile.js',
            'js/**/*.js',
            'spec/**/*.js'
        ],
        options: {
            jshintrc: '.jshintrc'
        }
    }
});

grunt.loadNpmTasks('grunt-contrib-jasmine');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.registerTask('test', ['jshint', 'jasmine']);
grunt.registerTask('default', ['test']);

};

rgba_spec.js 是我想要运行的测试。很简单:

define(['js/app/modules/rgbaHelpers'], function (rgbaHelpers) {
    describe('A suite', function() {
        it('should pass this test', function() {
            expect(rgbaHelpers).not.toBe(null);
        });
    });
});

但是当我运行 grunt jasmine 时出现以下错误:

Error: scripterror: Illegal path or script error: ['js/app/modules/rgbaHelpers']

我整天都在为这件事摸不着头脑。有谁知道这里发生了什么?

【问题讨论】:

    标签: javascript requirejs gruntjs jasmine


    【解决方案1】:

    所以我可以通过从模板选项中完全删除 requireConfig 和 baseURL 来解决这个问题:

        jasmine : {
            taskName: {
                src : 'js/**/*.js',
                options : {
                    specs : 'spec/**/*.js',
                    template: require('grunt-template-jasmine-requirejs'),
                    templateOptions: {
                    }
                }
            }
        }
    

    然后在每个规范的顶部我会做这样的事情:

    define(['js/app/modules/mouseHelpers'], function (mouseHelpers) {
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-30
      • 2014-07-06
      • 1970-01-01
      相关资源
      最近更新 更多