Search code examples
node.jsrequirejsamdgruntjs

RequireJs Module in node always returns undefined when using in a grunt task


I've a small config file that I need in frontend and in my grunt task.

js/config.js:

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

I can load the file in frontend without problems it also work in node. var requirejs = require('requirejs');

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

But when I try to load the same file in a grunt task it returns undefined:

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

Solution

  • The problem was that the I require requireJs outside of the module.exports function. So this works after all:

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