无法设置undefined的属性'exports'

时间:2015-10-12 11:15:33

标签: javascript node.js intern

我完全不知道为什么node.js会使包含其他文件的文件变得如此困难。

我有一个名为file_handler.js的文件

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

我希望像

这样的东西
var file_handler = require('./file_handler.js');
file_handler.upload_file(a,b);

上班。但我得到了upload_file()的“未定义不是函数”。我尝试了module.exports = {...}和exports = {...}的组合。模块和导出甚至没有在我的file_handler.js中定义,所以我必须设置exports = {};这对我来说毫无意义,因为Google上99%的例子都使用module.exports作为内置函数。

2 个答案:

答案 0 :(得分:3)

好的,显然是因为我需要将其加载为AMD模块。

module.exports = {...}是CommonJS方式。

define(function(){...});是AMD的方式(我需要使用它)。

答案 1 :(得分:1)

应该是:

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

我刚试过这个并且有效。

或者,您可以这样做:

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