Я использую npm wkhtmltopdf в node.js, я получаю сообщение об ошибке

https://www.npmjs.com/package/wkhtmltopdf

При установке пути функция преобразования pdf в cmd также работает нормально.
Почему я получаю следующую ошибку в node.js?

Использование других опций - та же ошибка.

Ошибка: Ошибка: создать wkhtmltopdf ENOENT
в ChildProcess. (C: \ Users \ khj \ React_androidProjects \ restAPIchecklist \ node_modules \ wkhtmltopdf \ index.js: 161: 11)
в Object.onceWrapper (events.js: 273: 13)
в ChildProcess.emit (events. js: 182: 13)
в Process.ChildProcess._handle.onexit (internal / child_process.js: 252: 12)
в onErrorNT (internal / child_process.js: 421: 16)
в процессе. internalTickCallback (internal / process / next_tick.js: 72: 19)
npm ERR! код ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] начало: node ./bin/www
npm ERR! Статус выхода 1
npm ERR!
npm ERR! Ошибка при запуске скрипта [email protected]. npm ERR! Вероятно, это не проблема npm. Скорее всего, выше имеется дополнительный вывод журнала.

npm ERR! Полный журнал этого запуска можно найти в:
npm ERR! C: \ Users \ khj \ AppData \ Roaming \ npm-cache_logs \ 2019-09-05T05_27_53_709Z-debug.log

->>>

debug.log Содержание

0 сработало, если оно заканчивается на ok
1 подробный клик ['E: \ nodejs \ node.exe',
1 подробный клик 'C: \ Users \ khj \ AppData \ Roaming \ npm \ node_modules \ npm \ bin \ npm-cli.js ',
1 подробный cli' start ']

router.get('/pdfbox', (req, res) => {
  wkhtmltopdf('https://www.google.com/', { output: './data/exlist.pdf' });
});

person 김회준    schedule 05.09.2019    source источник
comment
В вашей системе установлен wkhtmltopdf? Можете ли вы запустить его напрямую через командную строку (т.е. находится ли он в вашей переменной PATH)? и var wkhtmltopdf = require ('wkhtmltopdf'); в верхней части файла js?   -  person mohammad javad ahmadi    schedule 05.09.2019
comment
1. C: \ Program Files \ wkhtmltopdf. 2. npm install wkhtmltopdf --save. Я сделал это. - ›В модуле узла проекта есть три index.js, package.json и readme.md.   -  person 김회준    schedule 05.09.2019
comment
Когда вы закончите установку, убедитесь, что инструмент командной строки wkhtmltopdf находится в вашем PATH. Если вы по какой-то причине не хотите этого делать, вы можете изменить свойство require ('wkhtmltopdf'). Command на путь к инструменту командной строки wkhtmltopdf.   -  person mohammad javad ahmadi    schedule 05.09.2019
comment
путь был установлен. Но я получаю ту же ошибку.   -  person 김회준    schedule 05.09.2019
comment
Можете ли вы запустить wkhtmltopdf со своего терминала   -  person mohammad javad ahmadi    schedule 05.09.2019


Ответы (1)


Во-первых, вам необходимо установить в вашей системе инструмент командной строки wkhtmltopdf.

Самый простой способ сделать это - загрузить предварительно созданную версию для вашей системы. НЕ ПЫТАЙТЕСЬ использовать пакеты, предоставленные вашим дистрибутивом, поскольку они могут не использовать исправленный Qt и иметь недостающие функции.

Наконец, чтобы установить модуль узла, используйте npm:

npm install wkhtmltopdf --save

Когда вы закончите установку, убедитесь, что инструмент командной строки wkhtmltopdf находится в вашем PATH. Если вы по какой-то причине не хотите этого делать, вы можете изменить свойство require ('wkhtmltopdf'). Command на путь к инструменту командной строки wkhtmltopdf.

Затем убедитесь, что папка bin находится в вашем PATH. C: \ Program Files \ wkhtmltopdf \ bin - путь установки по умолчанию. Убедитесь, что он подходит для вашей машины.

в index.js добавьте эту команду:

var wkhtmltopdf = require('wkhtmltopdf');
router.get('/pdfbox', (req, res) => {
  wkhtmltopdf('https://www.google.com/', { output: './data/exlist.pdf' });
});

добавить PATH в окнах: windows

добавить PATH в linux: linux

person mohammad javad ahmadi    schedule 05.09.2019
comment
Могу ли я добавить C: \ Program Files \ wkhtmltopdf \ bin к такому пути? и (инструмент командной строки wkhtmltopdf находится в вашем PATH, когда вы закончите установку) - ›Я не понимаю, что это значит. - person 김회준; 05.09.2019
comment
запуск wkhtmltopdf с вашего терминала или cmd! - person mohammad javad ahmadi; 05.09.2019