【问题标题】:Google Firestore - Deploy Error: Function load error: Code in file index.js can't be loadedGoogle Firestore - 部署错误:函数加载错误:无法加载文件 index.js 中的代码
【发布时间】:2018-02-07 07:49:34
【问题描述】:

我正在尝试将我的功能部署到 Firebase,我收到以下错误:

函数加载错误:无法加载文件 index.js 中的代码。 您是否在 package.json 依赖项中列出了所有必需的模块?

Detailed stack trace: Error: Cannot find module 'express'
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object. (/user_code/index.js:6:15)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)

火力基地:

"firebase-admin": "~5.8.1"

“firebase-functions”:“^0.8.1”

这里已经提出了这个问题:https://github.com/firebase/firebase-tools/issues/515(但对于“firebase-admin”模块)

根据那里的输入,我尝试这样做: npm install --save-exact firebase-functions@0.7.0 npm install --save-exact firebase-admin@5.4.0。 但我遇到了以下错误:

错误:解析函数触发器时出错。请通过在您的函数文件夹中运行“npm i --save firebase-functions@latest”确保您拥有最新的 firebase-functions SDK。

节点版本,v8.4.0。

索引.js

const functions = require('firebase-functions'); 
const admin = require('firebase-admin'); 
admin.initializeApp(functions.config().firebase); 
var express = require('express'); 
var bodyParser = require('body-parser'); 

const users = require('../functions/controllers/users.controller'); 
var app = express(); 
app.use(bodyParser.urlencoded({ extended: true })) 
app.use(bodyParser.json()); 
app.post('/users', users.createUsers); 
exports.myappusers = functions.https.onRequest(app);

users.controller.js

const admin = require('firebase-admin');
const db = admin.firestore();

exports.createUsers = function(req, res){
    if(!req.body.name){
        return res.status(404).send({message: 'User name cannot be empty'})
    }
    else{
        db.collection('user-test')
        .add({
            name: req.body.name
        })
        .then((writeResult) => {
            return res.json({ result: `User ID: ${writeResult.id} added.`});
        })
        .catch((err)=>{
            return res.status(500).send(err);
        })
    }
}

【问题讨论】:

  • 你试过这个npm i --save firebase-functions@latest吗?
  • 请显示您的 index.js 中重现此错误的最少代码。
  • @PeterHaddad,是的,我做到了。我得到了关于快递的第一个错误。有点,陷入了一个循环。
  • 仅供参考,刚刚检查了 node_modules 文件夹,express 存在。

标签: firebase deployment google-cloud-firestore


【解决方案1】:

在折断了一天之后,我做了显而易见的事情。我安装了 Express 并进行了部署,但这次我在 body-parser 上遇到了同样的错误,_Error: Cannot find module 'body-parser'_ 也安装了body-parser。再次部署,瞧!!部署成功。

但我不确定为什么我必须显式安装它们,即使 expressbody-parser 模块都存在于 node-modules 文件夹中。

总结:

npm install --save --save-exact express@4.16.2    
npm install --save --save-exact body-parser@1.18.2    
firebase deploy --only functions  

【讨论】:

    【解决方案2】:

    您在 node_modules 文件夹中看到 express 但仍然收到错误的原因是因为它没有添加到 package.json 中。将其添加到 package.json 中的依赖项中,如下所示:

    "dependencies":{
       "express": "4.16.3",
       "firebase-admin": "5.13.0",
       "firebase-functions": "2.0.2"
     }
    

    您现在应该可以部署了。

    【讨论】:

      【解决方案3】:

      第一次使用

      npm install --save firebase

      在 C:\Users\HP\Desktop\New 文件夹 (2)\functions>

      记住安装firebase应该在functions文件夹中,它会正常工作

      你应该看到这个依赖关系

      “依赖”:{ “快递”:“4.17.1”, “火力基地”:“^7.14.3”, "firebase-admin": "^8.10.0", “firebase 功能”:“^3.6.1” },

      【讨论】:

      • 欢迎来到 StackOverflow,如果需要理解答案,请添加更多描述和代码,因为它会尽快解决其他人的问题。
      猜你喜欢
      • 2020-10-15
      • 1970-01-01
      • 1970-01-01
      • 2019-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-15
      相关资源
      最近更新 更多