Я построил приложение в стеке MEAN для запроса и отображения данных компании. Они используют Power Query внутренне, поэтому я пытаюсь создать конечную точку API, которая экспортирует результаты запроса в формат, совместимый с Excel, например TSV. Я могу сделать это легко с помощью утилиты командной строки mongoexport, однако у меня возникают трудности с автоматизацией использования этой утилиты с помощью моего Node API. Моя текущая попытка этого следует, в соответствии с this учебника:Автоматизация экспорта из API Node.js в TSV или другой совместимый с Excel формат
var child = require('child-process');
var exec = child.exec();
module.exports.tsvData = function (query) {
//Atempted child process manipulation to use mongoexport CLI utility in this endpoint.
var command = 'echo "ANDY"'
child = exec(command, function (error, stdout, stderr) {
sys.print('stdout: ' + stdout);
sys.print('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
};
Это возвращает следующее сообщение об ошибке:
TypeError: object is not a function
at module.exports.tsvData (C:\Users\awimley\pstat\app_api\controllers\main.js:367:13)
at callbacks (C:\Users\awimley\pstat\node_modules\express\lib\router\index.js:164:37)
at param (C:\Users\awimley\pstat\node_modules\express\lib\router\index.js:138:11)
at pass (C:\Users\awimley\pstat\node_modules\express\lib\router\index.js:145:5)
at Router._dispatch (C:\Users\awimley\pstat\node_modules\express\lib\router\index.js:173:5)
Это на ребенке = линия. Я подозревал, что это связано с тем, что учебник устарел, поэтому я попытался использовать синтаксис из Child Process documents. Я пробовал:
child = child_process.spawn('ls', {
stdio: [
0, // use parents stdin for child
'pipe', // pipe child's stdout to parent
fs.openSync('err.out', 'w') // direct child's stderr to a file
]
});
И он возвращает следующую ошибку:
events.js:72
throw er; // Unhandled 'error' event
^
Error: spawn ENOENT
at errnoException (child_process.js:1011:11)
at Process.ChildProcess._handle.onexit (child_process.js:802:34)
19 Oct 09:18:44 - [nodemon] app crashed - waiting for file changes before starting...
Любая помощь в стрельбе утилита командной строки из API Node.js будет фантастическим.
Это почти идентична моей первой попытки решения. Я попробовал ваш дословный. Он производит ту же ошибку «Объект не является функцией», указанную выше. – awimley
Я забыл включить, что у меня строка var exec. Мой вызов exec действительно является child.exec(), а не только некоторой функцией. – awimley
разные версии узла? ' $ узловых -v V4.0.0 $ узлового childProc.js STDOUT: ANDY STDERR: ' UNIX против окна? module.exports против немедленного выполнения? – davejagoda