У меня есть электронное приложение, которое использует React и Redux, поэтому у меня есть создатели действий, редукторы и т. д.
У меня также есть функция в моем файле рендерера (nodejs), которая делает некоторые асинхронные вещи.
Я хочу вызвать эту функцию из своего создателя действий. Я предполагаю, что мне придется использовать redux-thunk для этой или какой-либо другой асинхронной библиотеки, однако я не совсем уверен, как получить доступ к этой функции в процессе рендеринга и использовать ее в моем приложении react.redux?
Так, например. для создателя действия:
export const downloadFromYoutube = (download) => {
//I want to call the function here
};
и мой файл рендерера содержит только одну функцию, которая делает асинхронные вещи:
var YoutubeMp3Downloader = require('youtube-mp3-downloader');
function downloadFromYoutube() {
console.log("Hello");
//Configure YoutubeMp3Downloader with y our settings
var YD = new YoutubeMp3Downloader({
"ffmpegPath": "/usr/local/Cellar/ffmpeg/3.2.2/bin/ffmpeg", // Where is the FFmpeg binary located?
"outputPath": "/Users/dominik/Coding/youtube-downloader-papa/downloads/", // Where should the downloaded and encoded files be stored?
"youtubeVideoQuality": "highest", // What video quality should be used?
"queueParallelism": 2, // How many parallel downloads/encodes should be started?
"progressTimeout": 2000 // How long should be the interval of the progress reports
});
console.log("Downloading");
//Download video and save as MP3 file
YD.download("jhjPSj-qnyg");
YD.on("finished", function(data) {
console.log(data);
});
YD.on("error", function(error) {
console.log(error);
});
YD.on("progress", function(progress) {
console.log(progress);
});
}
}
var downloadFromYoutube = require('electron').remote.require('./downloadFromYoutube.js')
при условии, что имя вашего модуляdownloadFromYoutube.js
. - person Nikolaj Dam Larsen   schedule 01.03.2017Error: Cannot find module 'electron'
- person George Welder   schedule 01.03.2017require('downloadFromYoutube.js')
(т.е. без импорта электрона и использования удаленного доступа). Если он жалуется, то я считаю, что электрон расширяет объектwindow
, поэтому, возможно, вы могли бы использоватьconst downloadFromYoutube = window.require('electron').remote.require('./downloadFromYoutube.js';
. - person Nikolaj Dam Larsen   schedule 01.03.2017require('../../test.js');
, и этот файл содержит функцию,downloadSomething()
должен ли я тогда просто сделатьdownloadSomething();
в моем файле, который импортирует эту функцию? я получаюUncaught ReferenceError: downloadSomething is not defined
- person George Welder   schedule 01.03.2017require()
, вы импортируете модуль — это не совсем то же самое, что просто импортировать файл, вы должны определить, из чего состоит этот модуль, то есть публичный интерфейс этого модуля. В этом случае вы можете просто добавитьexports.module = downloadFromYoutube
в конец файлаdownloadFromYoutube.js
, и ошибка ссылки должна исчезнуть. Я рекомендую вам прочитать о том, как модули работают в JavaScript, так как он вездесущ. - person Nikolaj Dam Larsen   schedule 01.03.2017