web-dev-qa-db-ja.com

grunt requirejs '定義は未定義です'

grunt-contrib-requirejs プラグインを使用して、RequireJSを使用してGruntJSを最適化しようとしています。

問題は、コードを最適化する前に正常に動作し、最適化した後、コンソールにUncaught ReferenceError: define is not definedと表示されることです。

これがGruntfile.jsです

module.exports = function (grunt) {
  grunt.loadNpmTasks('grunt-contrib-requirejs');

  grunt.initConfig({
    requirejs: {
        compile : {
            options : {
              name  : 'main',
              baseUrl : ".",
              mainConfigFile : "./main.js",
              out : "./optimized.js",
              preserveLicenseComments: false
           }
        }
}
  })

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

}
14

defineはrequireJs関数であるため、requireJsまたはその他のAMDローダーをロードできないようです。他のAMDモジュールをロードする必要がなく、一度コンパイルした場合は、 アーモンド のような軽量ローダーシムを使用できます。

8

「include」オプションとしてrequire.jsファイルを追加すると機能するはずです。

requirejs: {
    compile : {
        options : {
            name  : 'main',
            baseUrl : ".",
            mainConfigFile : "./main.js",
            out : "./optimized.js",
            preserveLicenseComments: false,
            include: ['path/to/require.js']
        }
    }
}
12

Requirejs-scriptが欠落している前に指摘したように。

これは、公式requirejs-pageがそれを行うことを提案する方法です(私のgruntfileからリッピングされました):

requirejs: {
  compile: {
    options: {
      baseUrl: "src/js",
      mainConfigFile: 'src/js/require.config.js', 
      paths: {
        requireLib: "vendor/require/require"
      },
      include: "requireLib",
      name: "require.config",
      out: "dist/js/bundle.js"
    }
  }
},

オプションpathsおよびincludeを確認します。これらは、次の要件を満たすために不可欠です。定義されます。 requireLib-optionをrequire.js-fileにポイントするだけです。

ここで公式の回答を参照してください: http://requirejs.org/docs/optimization.html#onejs

0
Per Thomasson