最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - cannot set property 'exports' of undefined - Stack Overflow

programmeradmin2浏览0评论

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 binations 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.

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 binations 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.

Share Improve this question edited Oct 12, 2015 at 11:18 Tunaki 138k46 gold badges366 silver badges438 bronze badges asked Oct 12, 2015 at 11:15 BranBran 6478 silver badges22 bronze badges 1
  • Would it be possible to show the entire file_handler.js file, or at least how it begins and ends? – Ken Franqueiro Commented Oct 13, 2015 at 0:19
Add a ment  | 

2 Answers 2

Reset to default 3

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).

It should be:

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

I have just tried this and it worked.

Alternatively, you can do something like this:

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

评论列表(0)

  1. 暂无评论