【问题标题】:issue deploying functions to firebase from node.js从 node.js 将功能部署到 firebase
【发布时间】:2020-10-23 17:33:27
【问题描述】:

我正在尝试将 node.js 中的功能部署到 firebase。我收到了错误

函数加载用户代码失败。错误消息:错误:请检查您的函数日志以查看错误原因:

我试图阅读文档,但我无法理解它。

我对 node 很陌生,(比如 3 天新。)但我确实读到 node.js 从 8 更新到 node 10。有人可以告诉我我的函数日志是否不正确吗??

const functions = require('firebase-functions');

var admin = require("firebase-admin");

var serviceAccount = require("mydirectory");

admin.initializeApp({
 credential: admin.credential.cert(serviceAccount),
 databaseURL: "myfirebaseproject.com"
});


exports.sendPushNotifications = functions.https.onRequest((req, res) => {

  res.send('Attempting to send push notification')
  console.log('LOGGER --- Trying to send push message..');

  var uid = 'uidstring'

  var fcmToken = 'myFCMToken'

  return admin.database().ref('/users/' + uid).once('value', snapshot => {

  var user = snapshot.val();

  console.log("username is " + user.name);

  var payload = {
    notification: {
      title: 'Push Notification Title',
      body: 'Test Notification Message'
    }
  }

  admin.messaging().sendToDevice(fcmToken, payload)
   .then(function(response) {
    console.log('Succesfully sent message:', response);
    console.log(response.results[0].error);

  })
  .catch(function(error) {
    console.log('Error sending message', error);
  });

  })
})

package.json

{


"name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "serve": "firebase emulators:start --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },

 "engines": {


  "node": "10"
  },
  "dependencies": {
    "firebase-admin": "^8.10.0",
    "firebase-functions": "^3.6.1"
  },
  "devDependencies": {
    "firebase-functions-test": "^0.2.0"
  },
  "private": true
}

【问题讨论】:

  • 该错误提示您应该查看 Firebase 控制台中的函数日志以获取更多信息。
  • @DougStevenson 谢谢,我将其缩小到详细的堆栈跟踪:错误:找不到模块,您是否在 package.json 依赖项中列出了所有必需的模块?我已经用我的包裹更新了我的问题。你能帮我了解我的下一步应该是什么吗?

标签: node.js firebase-realtime-database google-cloud-functions


【解决方案1】:

此错误通常与模块安装在错误的文件夹中有关。您需要将模块安装在package.json“live”所在的文件夹中,通常是“functions”文件夹,因此在部署函数时,可以访问该模块。

您可能需要在 JSON 文件所在的文件夹中运行命令 npm install --save firebase,这样您就不会再遇到这个问题了。在正确的文件夹中运行此命令后,您应该能够部署您的函数。

除此之外,您还可以在以下链接中找到类似的案例,其中的解决方案就是这个:

如果这些信息对您有帮助,请告诉我!

【讨论】:

  • 您好,我已经尝试过您的方法,但我仍然面临详细的堆栈跟踪:错误:找不到模块'/Users/Mypath/file.json。你是否在 package.json 依赖项中列出了所有必需的模块?
  • 嗨@zachwilcox你能澄清一下你尝试了什么吗?如果您可以提供有关您现在安装模块的位置的详细信息,它是否是全局的,在哪个文件夹中等等,因为一旦您将它安装在正确的文件夹中,这应该可以解决您的问题。
猜你喜欢
  • 1970-01-01
  • 2017-08-14
  • 1970-01-01
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
  • 2017-10-05
相关资源
最近更新 更多