将 Cloud Functions 部署到 Firebase 时出现 ENOENT 错误



我正在使用云函数在实时数据库更新时向用户发送通知。

当我使用firebase init functions创建项目并运行 Windows 10 时,我选择了"javascript"。

每当我使用firebase deploy它都会向我显示此错误:

Error: spawn npm --prefix "I:Indian Meme Templatesfunctions" run lint ENOENT
at notFoundError (C:UsersPranavAppDataRoamingnpmnode_modulesfirebase-toolsnode_modulescross-envnode_modulescross-spawnlibenoent.js:6:26)
at verifyENOENT (C:UsersPranavAppDataRoamingnpmnode_modulesfirebase-toolsnode_modulescross-envnode_modulescross-spawnlibenoent.js:40:16)
at ChildProcess.cp.emit (C:UsersPranavAppDataRoamingnpmnode_modulesfirebase-toolsnode_modulescross-envnode_modulescross-spawnlibenoent.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:UsersPranavAppDataRoamingnpmnode_modulesfirebase- 
toolsnode_modulescross-envnode_modulescross-spawnlibenoent.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);
});
}
});

此错误的原因是,在部署期间,firebase deploy操作正在尝试 lint (校对( 您的代码,但它找不到用于 lint 代码的工具和/或文件。

尝试解决此问题的第一步是确保已使用npm run installfunctions文件夹中安装了所有依赖项。这将确保已安装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);
});
}
});

如果您刚刚开始使用Firebase,我建议您在VS Code或Atom等IDE中工作,因为它将帮助您进行代码提示,实时linting和语法突出显示。

相关内容

  • 没有找到相关文章

最新更新