无法读取 Firebase 函数中未定义错误的属性 https



我正在关注这个youtube firebase官方教程,关于服务器端反应渲染的云函数。

(顺便说一下,我遵循了视频的确切目录结构。

但是每当我尝试提供它时,我都会收到错误:

i  functions: Preparing to emulate functions.
⚠  hosting: Port 5000 is not available. Trying another port...
i  hosting: Serving hosting files from: dev
✔  hosting: Local server: http://localhost:5004
⚠  functions: Failed to load functions source code. Ensure that you have the latest SDK by running npm i --save firebase-functions inside the functions directory.
⚠  functions: Error from emulator. Error occurred while parsing your function triggers.
TypeError: Cannot read property 'https' of undefined
at Object.<anonymous> (/Users/mac/Documents/React-Projects/React-js/Cards/functions/index.js:35:54)
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)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at /Users/mac/.nvm/versions/node/v6.11.5/lib/node_modules/firebase-tools/lib/triggerParser.js:21:11
at Object.<anonymous> (/Users/mac/.nvm/versions/node/v6.11.5/lib/node_modules/firebase-tools/lib/triggerParser.js:75:3)

我已经按照它所说的npm i --save firebase-functions尝试过,但仍然出现错误。

Firebase.json:

{
"hosting": {
"public": "dev",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites":[{
"source": "**",
"function": "main"
}]
}
}

索引.js在项目文件夹的根目录中:

import React from 'react';
import { renderToString } from 'react-dom';
import express from 'express';
import Test from './src/components/Test/Test';
import functions from 'firebase-functions';
const app = express();
app.get('**', (req, res) => {
const html = renderToString(<Test />);
res.send(html);
});
export let main = functions.https.onRequest(app);

package.json:

{
"name": "Cards",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1",
"dev": "webpack --mode development",
"start": "webpack-dev-server --open --hot --mode development",
"build": "webpack -p --config webpack.prod.config.js",
"babel": "babel src -d functions/src && babel index.js -d functions"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@material-ui/core": "^1.3.0",
"@material-ui/icons": "^1.1.0",
"firebase": "^5.2.0",
"react": "^16.4.1",
"react-dom": "^16.4.1"
},
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-core": "^6.26.3",
"babel-loader": "^7.1.4",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"firebase-admin": "^5.12.1",
"firebase-functions": "^1.1.0",
"firebase-tools": "^3.19.1",
"webpack": "^4.14.0",
"webpack-dev-server": "^3.1.4"
}
}

通过查看错误,它指向索引.js文件中functions.https.onRequest(app);行。

我还检查了功能入门指南,它functions.https.onRequest(...).

那么,问题在哪里,我该如何解决呢?

系统详细信息

macOS:10.13.4

NVM:0.33.11

节点:6.11.5

NPM:3.10.10

你应该做:

import * as functions from 'firebase-functions'

因为"Firebase函数">显然似乎没有默认导出

或者你可以做:

import { https } from 'firebase-functions'

但请记住将您可能在代码中使用的任何其他函数添加到此 impot。

相关内容

最新更新