Google Firestore - 部署错误:函数加载错误:无法加载文件index.js中的代码

时间:2018-02-07 07:49:35

标签: firebase deployment google-cloud-firestore

我正在尝试将我的函数部署到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。

Index.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);
        })
    }
}

3 个答案:

答案 0 :(得分:3)

在我的头上摔了一天之后,我做了很明显的事。我安装了Express并进行了部署,但这次我为body-parser _Error: Cannot find module 'body-parser'_得到了同样的错误 安装的身体解析器也是如此。再次部署,瞧!!部署成功。

但即使express文件夹中存在body-parsernode-modules模块,我也不确定为什么必须明确安装它们。

摘要:

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

答案 1 :(得分:0)

您看到在node_modules文件夹中表达但仍然出现错误的原因是因为它没有添加到package.json中。像这样在依赖项中将其添加到package.json中:

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

您应该可以立即进行部署。

答案 2 :(得分:0)

首次使用

npm install --save firebase

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

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

您应该看到这种依赖性

“依赖项”:{ “ express”:“ 4.17.1”, “ firebase”:“ ^ 7.14.3”, “ firebase-admin”:“ ^ 8.10.0”, “ firebase-functions”:“ ^ 3.6.1” }