2015-10-12 42 views
0

我完全不知道为什么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); 

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

+0

是否可以显示整个'file_handler.js'文件,或者至少它是如何开始和结束的? –

回答

2

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

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

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

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); 
}; 
+0

是的,我尝试过这些,但是当我运行我的代码时,它说模块未定义(对于第一个示例),并且导出未定义为第二个示例。 – Bran

相关问题