Node.js GCP云功能“;找不到模块';快递'&引用;当它在my package.json中时
我正试图从源代码(镜像git repo)部署一个GCP云函数。Cloud Function deploy似乎正确地找到了我的index.js(其中包含函数处理程序),但由于无法加载index.js文件中的Node.js GCP云功能“;找不到模块';快递'&引用;当它在my package.json中时,node.js,google-cloud-functions,Node.js,Google Cloud Functions,我正试图从源代码(镜像git repo)部署一个GCP云函数。Cloud Function deploy似乎正确地找到了我的index.js(其中包含函数处理程序),但由于无法加载index.js文件中的代码而失败。找不到其他许多人发布的模块“express”错误。My package.json文件肯定包含express,但是: { ... "dependencies": { "@google-cloud/speech": "^2.3.1", "@google-cloud
代码而失败。找不到其他许多人发布的模块“express”
错误。My package.json文件肯定包含express,但是:
{
...
"dependencies": {
"@google-cloud/speech": "^2.3.1",
"@google-cloud/storage": "^2.5.0",
"@sentry/node": "^5.4.3",
"cors": "^2.8.5",
"express": "4.17.1",
"googleapis": "45.0.0",
"moment": "^2.24.0",
"stripe": "^7.1.0"
},
...
}
mypackage.json位于项目根目录中,而公开函数本身的代码位于/app/index.js
中。我在这里做错了什么
编辑:
我能够用一个非常简单的应用程序重现这一点。该应用程序仅包含4个文件:
app/index.js
.gitignore
package.json
yarn.lock
app/index.js
.gitignore
package.json
纱线锁
//package.json
{
“名称”:“云功能测试”,
“版本”:“1.0.0”,
“main”:“app/index.js”,
“存储库”:git@github.com:roballsopp/cloud functions test.git“,
“作者”:“rob”,
“许可证”:“麻省理工学院”,
“依赖项”:{
“快速”:“^4.17.1”
}
}
//index.js
const express=require('express');
常量app=express();
app.get('/health',函数(req,res){
res.status(200).send({message:'All good!'});
});
exports.testApp=app;
我将其推送到github,在GCP中设置镜像回购,并使用它部署了HTTP云功能。部署的所有设置都是默认设置,除了我将“Repository”设置为我的repo的名称,如云源代码存储库中所示,“Function to execute”设置为
testApp
,将“Directory with Source code”设置为/app
当我们从Git repo中包含的数据部署云函数时,我们有机会使用源代码指定目录。据信,这会导致该目录(以及可能的从属目录)的部署。在这个故事中,我们有:
app
index.js
package.json
我们将“带有源代码的目录”指定为/app
,然后实际部署的没有包含包.json
。没有package.json
就没有明确的依赖关系,因此不知道对express
的依赖关系
另见:
app
index.js
package.json