2015-10-12 73 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

相關問題