Ошибка ENOENT при развертывании облачных функций в Firebase - PullRequest
0 голосов
/ 24 января 2020

Я использую облачные функции для отправки пользователю уведомления при обновлении базы данных в реальном времени.

Я выбрал «javascript», когда создал проект с использованием firebase init functions и выполняю Windows 10 .

Всякий раз, когда я использую firebase deploy, это показывает мне эту ошибку:

Error: spawn npm --prefix "I:\Indian Meme Templates\functions" run lint ENOENT
    at notFoundError (C:\Users\Pranav\AppData\Roaming\npm\node_modules\firebase-tools\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:6:26)
    at verifyENOENT (C:\Users\Pranav\AppData\Roaming\npm\node_modules\firebase-tools\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:40:16)
    at ChildProcess.cp.emit (C:\Users\Pranav\AppData\Roaming\npm\node_modules\firebase-tools\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:27:25)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
Emitted 'error' event on ChildProcess instance at:
    at ChildProcess.cp.emit (C:\Users\Pranav\AppData\Roaming\npm\node_modules\firebase- 
     tools\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:30:37)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
{
    code: 'ENOENT',
    errno: 'ENOENT',
    syscall: 'spawn npm --prefix "I:\\Indian Meme Templates\\functions" run lint',
    path: 'npm --prefix "I:\\Indian Meme Templates\\functions" run lint',
    spawnargs: []
}

Это мой Index.js файл:

const functions = require('firebase-functions');
exports.sendAdminNotification = functions.database.red('\Data/{pushId}').onWrite(evet =>){

    const data = event.data.val();
    if(data.priority==1){
        const payload = { notification: 
            {title: 'New Data',
             body: '${data.title}'
            }
        };
        return admin.messaging().sendToTopic("News",payload).then(function(response))
        {
            console.log('Notification sent successfully: ',response);
        }).catch(function(error)){
            console.log('Notification sent failed: ',error);
        });
    }
});

1 Ответ

1 голос
/ 25 января 2020

Причиной этой ошибки является то, что во время развертывания операция firebase deploy пытается заморозить (вычитать) ваш код, но не может найти инструмент и / или файл, используемый для закрепления вашего кода.

Первый шаг в попытке решить эту проблему - убедиться, что вы установили все зависимости в папке functions, используя npm run install. Это обеспечит установку инструмента eslint.

Далее, поскольку команда npm run lint настроена на вызов eslint . по умолчанию, ваш файл Index.js должен быть переименован в index.js. Это связано с тем, что index.js имеет особое значение в проектах Javascript / Typescript как точка входа по умолчанию для папки. Большинство инструментов ожидают, что соблюдаются соглашения о присвоении имен и что они в нижнем регистре.

Далее, предоставленный вами файл index.js содержит несколько опечаток (которые следует выделить, когда инструмент lint выполняет свою работу).

Вот тот же код, переписанный без этих опечаток:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

exports.sendAdminNotification = functions.database.ref('/Data/{pushId}').onWrite(event => {
    const data = event.data.val();
    if (data.priority == 1) {
        const payload = {
            notification: {
                title: 'New Data',
                body: '${data.title}'
            }
        };

        return admin.messaging().sendToTopic("News", payload)
            .then(function(response) {
                console.log('Notification sent successfully: ', response);
            })
            .catch(function(error) {
                console.log('Notification sent failed: ', error);
            });
    }
});

Я рекомендую работать в среде IDE, такой как VS Code или Atom если вы только начинаете использовать Firebase, так как он поможет вам с подсказками кода, динамической подсветкой и подсветкой синтаксиса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...