#node.js #url #npm
Вопрос:
У меня есть nodejs v16.13.0 и npm 8.1.0.
Когда я запускаю команду npm help update
в cmd или PowerShell (администратор и обычный) Я получаю следующую ошибку
npm help update
npm ERR! Invalid URL: file://C:Program Filesnodejsnode_modulesnpmdocsoutputcommandsnpm-update.html
Я могу подтвердить, что файл существует в указанном месте, но по какой-то причине команда неправильно считывает путь. Есть ли файл, в который мне нужно внести изменения?
Я не нашел ни одного подходящего решения(ов) в Интернете… и до сих пор здесь тоже нет.
Ответ №1:
У меня та же проблема со всей справкой npm … команды, например:
C:DEVyoutube>npm help npm
npm ERR! Invalid URL: file://C:UsersmirekAppDataRoamingnpmnode_modulesnpmdocsoutputcommandsnpm.html
npm ERR! A complete log of this run file:///C:/Users/mirek/AppData/Roaming/npm/node_modules/npm/docs/output/commands/npm.htmlcan be found in:
npm ERR! C:UsersmirekAppDataLocalnpm-cache_logs2021-11-04T06_20_51_613Z-debug.log
Похоже, что это проблема с закодированным URL-адресом, потому что сам файл существует. Если URL — адрес расшифрован в
file:///C:/Users/mirek/AppData/Roaming/npm/node_modules/npm/docs/output/commands/npm.html
его можно открыть в браузере, и он работает просто отлично.
Кроме того, основывайтесь на входе в систему
C:UsersmirekAppDataLocalnpm-cache_logs2021-11-04T06_20_51_613Z-debug.log
проблема заключается в
C:UsersmirekAppDataRoamingnpmnode_modulesnpmlibutilsopen-url.js:31:11.
Который пытается проверить правильность URL-адреса файла. Однако, по-видимому, у него проблема с закодированным URL-адресом.
Поэтому я попытался прокомментировать строку 7 в этом файле, которая кодирует URL:
5. // attempt to open URL in web-browser, print address otherwise:
6: const open = async (npm, url, errMsg) => {
7: //url = encodeURI(url)
8: const browser = npm.config.get('browser')
После этой модификации он работает просто отлично.
Комментарии:
1. ОБНОВЛЕНИЕ: Строка encodeURI(url) была добавлена 27 сентября 2021 года, см. github.com/npm/cli/pull/3804 .
2. Это решило проблему. Спасибо. Однако файл находился в папке «Мои программные файлы».