Я получаю это сообщение, когда запускаю локальный сервер Firebase с firebase serve:
Warning: You're using Node.js v8.9.4 but Google Cloud Functions only supports v6.11.5.
Но информации о том, что делать, нет. Что мне нужно сделать, чтобы понизить версию Node.js до версии 6.11.5? Должен ли я использовать эту версию только для проектов Firebase и последнюю выпущенную версию Node.js для других проектов? В таком случае, как мне это сделать?
Обновлено: предупреждение теперь выглядит так, и я не могу запустить новый почти пустой проект:
Warning: You're using Node.js v8.9.4 but Google Cloud Functions only supports v6.11.5.
! functions: Failed to load functions source code. Ensure that you have the latest SDK by running npm i --save firebase-functions inside the functions directory.
! functions: Error from emulator. mod.hasOwnProperty is not a function
Так что я действительно думаю, что мне нужно понизить версию Node.js. Но я не знаю, как это сделать безопасно. Хм, глядя на http://nodejs.org/ не могу найти даже версию v6.11.5?
Обновлено еще раз: Только что проверил новый проект, исправил ли npm update --dev проблему. Это не так. (На самом деле нет обновленных пакетов.)





Это просто предупреждение. Вы можете игнорировать это, если знаете, что делаете. Он сообщает вам, что ваша локальная эмуляция функции (работающая на узле 8.9.4) может не полностью соответствовать тому, что функция будет делать при ее развертывании в облачных функциях (работающей на 6.11.5). Но пока вы не используете какие-либо функции узла, которые недоступны на узле 6.11.5, у вас не будет проблем. Я использую более новые версии узла для постоянного локального тестирования без проблем.
Возможно, вы использовали языковую функцию, которой не было в узле 6, например async / await. Нет проблем, если вы будете придерживаться того, что поддерживается узлом 6.
Может быть. Но я сам не использовал async / await. Однако в некоторых модулях могут быть неподдерживаемые функции. Есть ли способ узнать? Любой инструмент, с помощью которого можно это проверить?
Я просто попытался развернуть запланированную функцию с более новой версией узла на моем локальном компьютере, и она была отклонена с непонятными сообщениями об ошибках. Команда поддержки Firebase попросила меня понизить версию узла, и это сработало .. Загвоздка в том, что сообщения журнала не часто указывают в правильном направлении: /
Вы можете удалить и переустановить эмулятор Cloud Functions и Firebase Tools, используя команды, представленные в руководстве GitHub Поиск проблемы. Поскольку вы используете Firebase, следуйте инструкциям для «Инструменты Firebase».
Спасибо, но не думаю, что это поможет. В нем не говорится, как перейти на более раннюю версию Node.js.
@Leo - вам необходимо переустановить Node.js для перехода на более раннюю версию, указав номер версии во время установки, 6.11.5 для вас, как описано здесь abeautifulsite.net/how-to-upgrade-or-downgrade-nodejs-using- npm. Надеюсь это поможет.
Спасибо, похоже, это то, что я ищу. Я предполагаю, что n здесь - это node? (sudo n stable, sudo n 4.4.2, sudo npm install -g n) Нет команды n при запуске в Windows.
@Leo - вот команды для установки в Windows, включая команды для установки конкретной версии. github.com/felixrieseberg/npm-windows-upgrade
В ответах на этот вопрос перечислено несколько инструментов.
Для Windows я просто успешно использовал nvmw для выполнения той же задачи.
Node v8 теперь доступен для облачных функций: https://firebase.googleblog.com/2018/08/cloud-functions-for-firebase-config-node-8-timeout-memory-region.html
Так что я считаю, что это предупреждение действительно можно игнорировать ...
После установки nvm. просто используйте эту команду "nvm install 8.9.1 64bit" вы можете использовать любую версию здесь или 64bit 32bit в соответствии с конфигурацией вашей системы после этой установки используйте "nvm use 8.9.1"
Похоже, возникла какая-то проблема (см. Поддержка облачных функций в Node.js v8 [66770141] - Issuesetracker.google.com/issues/66770141). Я понятия не имею, что именно из-за этого не работает, но со мной случилось так, что что-то, что действительно работало локально, не работало на развернутом сервере.