Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js GCP云功能“;找不到模块';快递'&引用;当它在my package.json中时_Node.js_Google Cloud Functions - Fatal编程技术网

Node.js GCP云功能“;找不到模块';快递'&引用;当它在my package.json中时

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

我正试图从源代码(镜像git repo)部署一个GCP云函数。Cloud Function deploy似乎正确地找到了我的index.js(其中包含函数处理程序),但由于无法加载index.js文件中的
代码而失败。找不到其他许多人发布的模块“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
的依赖关系

另见:


您是否有关于我们如何准确复制的说明?请编辑问题以列出要复制的步骤(请不要链接到场外)@DougStevenson,添加了一些步骤,用一个简单的示例来重现。您确定模块是作为部署的一部分安装的吗?我如何验证?Rob,尝试不将“带有源代码的目录”指定为/app。。。。我的想法是,这将只向下部署/应用程序。。。package.json中的“main”条目应该足以标识要运行的源。
app
  index.js
package.json