在grunt任务中使用RequireJs模块时,node中的RequireJs模块总是返回undefined



我有一个小的配置文件,我需要在前端和我的grunt任务。

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任务中加载相同的文件时,它返回未定义:

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

问题是I需要module.exports函数之外的requires。所以这是有效的:

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

这段代码适合我。首先,我已经安装了需求:

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

最新更新