2013-04-18 62 views
0

我在前端和我的咕嚕任務中需要一個小配置文件。使用咕嚕任務時,RequireJs模塊在節點中總是返回undefined

JS/config.js:

define(function() { 
    return [ 
    { 
     id: 'demo', 
     displayName: 'Demo' 
    } 
    ]; 
}); 

我可以加載在前端文件沒有問題它節點也工作。 var requirejs = require('requirejs');

requirejs.config({ 
    nodeRequire: require, 
    baseUrl: './js' 
}); 
var config = requirejs('config') 

但是當我嘗試加載在同一文件中的咕嚕任務則返回undefined:

requirejs.config({ 
    nodeRequire: require, 
    baseUrl: './js' 
}); 
grunt.registerTask('lala', function () { 
    var config = requirejs('config') 
}); 

回答

1

問題是我需要requireJs在module.exports函數之外。所以這工作畢竟:

module.exports = function(grunt) { 

    var requirejs = require('requirejs'); 

    requirejs.config({ 
    nodeRequire: require, 
    baseUrl: './js/cfe/app/platforms/as' 
    }); 

    grunt.registerTask('lala', function () { 
    var config = requirejs('config') 
    }); 
} 
0

此代碼對我的作品。首先,我已經安裝了requirejs:

cd /path/to/code/directory 
npm install requirejs 

然後在我的app.js:

var requirejs = require('requirejs'); 

requirejs.config({ 
    nodeRequire: require, 
    baseUrl: './js' 
}); 

var config = requirejs('config'); 
console.log(config); 

而且在js/config.js:

define(function() { 
    return [ 
    { 
     id: 'demo', 
     displayName: 'Demo' 
    } 
    ]; 
}); 

當我運行它,我得到正確的結果:

$ node app.js 
[ { id: 'demo', displayName: 'Demo' } ] 

我正在使用Node v0.10.1。

+0

你確定關於異步加載。節點的文檔有一個同步請求調用的示例:http://requirejs.org/docs/node.html#3 –

+0

@AndreasKöberle你說得對,我很抱歉。我更新了我的答案,但一切都適合我。你能重現這些步驟並確保問題不是別的嗎? – jgillich

+0

好吧檢查它,它運行在一個單獨的文件。 –