2012-10-21 49 views
8

在我grunt.js文件我有使用咕嚕杏仁結果requirejs在「定義沒有定義」

requirejs: { 
    dist: { 
     options: { 
      almond: true, 
      wrap: true, 
      modules: [{name: 'main'}], 
      mainConfigFile: "src/js/main.js", 
      baseUrl: "src/js", 
      dir: "tmp/js", 
      inlineText: true, 
      preserveLicenseComments: false 
     } 
    } 
} 

運行grunt requirejs:dist一些縮小的文件填充tmp/js目錄 - 其中包括一個大的main.js文件(一切似乎都在這個文件中像預期的那樣被捆綁) - 但是當我要包含這個文件像這樣

<script type="text/javascript" src="tmp/main.js"></script> 

它導致"Uncaught ReferenceError: define is not defined"

使用杏仁背後的意圖是,我不需要加載一個require.js文件來加載我的opimized文件 - 任何想法如何讓這個工作?

腳註:我已經成功地做這種方式,除了以前在main-built.js文件已經被編譯,但是這似乎並沒有這樣的情況了(更新... -.-)

回答

2

所以我試圖建立一個空的目錄與下列文件夾&

/grunt.js 
/src/js/main.js 
/tmp/js 

這裏是我的grunt.js:

module.exports = function(grunt) { 

    grunt.loadNpmTasks("grunt-requirejs"); 
    grunt.initConfig({ 
     requirejs: { 
      dist: { 
       options: { 
        almond: true, 
        wrap: true, 
        modules: [{name: 'main'}], 
        mainConfigFile: "src/js/main.js", 
        baseUrl: "src/js", 
        dir: "tmp/js", 
        inlineText: true, 
        preserveLicenseComments: false 
       } 
      } 
     } 
    }); 

    grunt.registerTask("default", "requirejs"); 
}; 

這裏是我main.js:

define(function() { 
    console.log('hi'); 
}); 

我跑在控制檯這些命令:

npm install grunt 
npm install requirejs 
npm install grunt-requirejs 
grunt --gruntfile grunt.js 

咕嚕聲輸出這樣的:

Running "requirejs:dist" (requirejs) task 
>> RequireJS optimizer finished 
Uncompressed size: 14234 bytes. 
Compressed size: 1265 bytes gzipped. (2633 bytes minified) 

在/ tmp/JS生成的文件/ main.js確實提到了杏仁。它沒有提到定義函數,因爲js已經被最小化了。我致電define(被重寫爲n(

我懷疑你可能有調用define的最小化文件之外的代碼。

另外,在我的其他項目中,我的mainConfigFile只引用爲配置文件,並未作爲模塊加載。

+0

目前不再使用require.js,但我會盡快實現您的建議,只要我再次獲得我的手 - 感謝您的答案:) – Peter