1

私はこのディレクトリ構造を持っています:

webapp     
  ├──static
  │   ├── app
  │        ├── config.js
  │        ├── frontpage.js
  │        ├── profile.js
  │        └── utils.js
Gruntfile.js

そして、 grunt-contrib-requirejs を使用して、profileandの依存関係を最適化しようとしていますfrontpage。今私のconfig.jsは次のようになります:

    require.config({
        {
          baseUrl:"/static/app",
          shim: {
           bootstrap : { "deps" :['jquery'] } ,
           velocity : { "deps" : ['jquery']}
          },
          paths: {
            jquery: "../bower_components/jquery/dist/jquery.min",
            bootstrap : "//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min",
            requirejs: "../bower_components/requirejs/require",
            handlebars: "../bower_components/handlebars/handlebars.min",
            velocity: "../bower_components/velocity/velocity.min"

          },
          packages: []
        });

grunt-require-config の次の構成を試しました

requirejs: {
          compile: {
            options: {
              appDir: "static/app",
              modules : [
                {
                    name: "profile"                 
                }
              ],
              mainConfigFile: "./static/app/config.js",
              optimize: "none",
              dir: "./static/build/"
            }
          }
        }

しかし、私はこのエラーが発生します:

Running "requirejs:compile" (requirejs) task
{ [Error: Error: ERROR: module path does not exist: /static/app/profile.js for module named: profile. Path is relative to: /webapp
 [..]

そのパスは正しいので、これは奇妙です!

私はこの周りの多くの例を見つけることができません.誰か助けてもらえますか?

アップデート:

必要なのはbaseUrlGruntfile.js の を調整することだけで、 を削除しましappDirた。requirejs オプションの baseUrl は、config と同じになりました。

requirejs: {
          compile: {
            options: {          
              baseUrl: "static/app",
             /* modules : [
                {
                    name: "profile"

                },
                {
                    name: "frontpage"

                }
              ],*/
              mainConfigFile: "./static/app/config.js",
              optimize: "none",
              dir: "./static/build/"
            }
          }
        }
4

1 に答える 1

0

config.js と profile.js のパスが同じであるため、config の baseUrl が間違っています。

この構成を自分のマシンでテストし、動作しています。

Gruntfile.js

module.exports = function(grunt) {

grunt.initConfig({
    requirejs: {
        compile: {
            options: {
              appDir: "webapp/static/app",
              modules : [
                {
                    name: "profile"
                }
              ],
              mainConfigFile: "webapp/static/app/config.js",
              optimize: "none",
              dir: "./dist/"
            }
        }
    }
  });
  grunt.loadNpmTasks('grunt-contrib-requirejs');


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

};

config.js

require.config(
{
  baseUrl:".",
  packages: [],
}
);
于 2015-05-05T23:38:23.713 に答える