2015-10-12 1 views
0

У меня нет абсолютно никакой подсказки, почему node.js делает включение файлов из других файлов таким сложным.не может установить свойство 'export' of undefined

У меня есть файл с именем 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 is not function» для upload_file(). Я пробовал комбинации module.exports = {...} и export = {...}. модуль и экспорт даже не определены в файле file_handler.js, поэтому мне нужно установить export = {}; Это не имеет никакого смысла для меня, поскольку 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

 Смежные вопросы

  • Нет связанных вопросов^_^