Search code examples
javascriptnode.jsintern

cannot set property 'exports' of undefined


I have absolutely no clue why node.js makes including files from other files so difficult.

I have a file called file_handler.js

exports = {};
exports = {
    upload_file: function (fileUploaderPath, filename) {
        var child_process = require('intern/dojo/node!child_process');
        child_process.spawn(fileUploaderPath + ' ' + filename);
    }
};

I would expect something like

var file_handler = require('./file_handler.js');
file_handler.upload_file(a,b);

to work. But I'm getting an "undefined is not a function" for upload_file(). I tried combinations of module.exports = {...} and exports = {...}. module and exports aren't even defined in my file_handler.js, so I have to set exports = {}; Which makes no sense to me since 99% of the examples on Google use module.exports as built-in.


Solution

  • Okay, apparently it's because I need to load it as an AMD module.

    module.exports = {...} is the CommonJS way.

    define(function() {...}); is the AMD way (which I needed to use).