在使用grunt任务时,节点中的RequireJs模块始终返回undefined

时间:2013-04-18 15:58:09

标签: node.js requirejs amd gruntjs

我在前端和我的笨拙任务中需要一个小配置文件。

js / config.js:

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

我可以在前端加载文件而不会出现问题,它也可以在节点中运行。     var requirejs = require('requirejs');

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

但是当我尝试在grunt任务中加载相同的文件时,它返回undefined:

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

2 个答案:

答案 0 :(得分:1)

问题在于我需要在module.exports函数之外的requireJs。所以这毕竟有用:

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')
  });
}

答案 1 :(得分: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。