【发布时间】:2020-06-04 08:48:14
【问题描述】:
我在 functions/src/index.ts 中声明了简单的谷歌云函数
import * as functions from 'firebase-functions';
import { Hero } from './hero';
var util = require('util')
export const repeat = functions.https.onCall(
function (data, context){
console.log(' repeat ' + util.inspect(data) + util.inspect(context));
let aHero = new Hero('Google cloud', 50);
return aHero;
}
);
并且Hero被声明在另一个文件名hero.ts中,如下与index.ts在同一文件夹中,即functions/src/
export class Hero {
id: number;
name: string;
constructor( name: string, id: number) {
this.name = name;
this.id = id;
}
}
但 firebase 部署 失败并跟随
! functions[repeat(us-central1)]: Deployment error.
Function failed on loading user code. Error message: Code in file lib/index.js can't be loaded.
Did you list all required modules in the package.json dependencies?
Detailed stack trace: Error: Cannot find module './hero'
at Function.Module._resolveFilename (module.js:548:15)
at Function.Module._load (module.js:475:25)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/srv/lib/index.js:4:16)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
Hero 是一个类而不是 module,如果我删除 hero.ts 文件并将该类放在同一个 index.ts 中,则代码可以工作。那么它需要包含在哪里呢?
【问题讨论】:
-
您的
hero.ts文件与index.ts文件位置相比在哪里? -
我已经尝试过您的代码(在 macOS 上),它确实有效。也许尝试一个全新的 Firebase 项目。
标签: typescript firebase google-cloud-functions