Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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 谷歌云功能有时不起作用';尽管buildpack在本地Docker中构建并运行良好,但它找不到@google cloud/*依赖项_Node.js_Google Cloud Platform_Build_Google Cloud Functions_Dependencies - Fatal编程技术网

Node.js 谷歌云功能有时不起作用';尽管buildpack在本地Docker中构建并运行良好,但它找不到@google cloud/*依赖项

Node.js 谷歌云功能有时不起作用';尽管buildpack在本地Docker中构建并运行良好,但它找不到@google cloud/*依赖项,node.js,google-cloud-platform,build,google-cloud-functions,dependencies,Node.js,Google Cloud Platform,Build,Google Cloud Functions,Dependencies,我正在部署一个Google Cloud函数,但它未能部署,因为它有时找不到模块@Google Cloud/pubsub,当它找到它时,它反而由于来自pubsub包的可传递依赖项而失败。我在@googlecloud/storage中也遇到过这种情况,但从未解决过 有关此问题的示例,请参阅本文下面的日志屏幕截图。它显示了两个连续的部署 在第一次部署中,未找到@googlecloud/pubsub,尽管它在package.json中列出 在第二次部署中,找到了pubsub包(!),但它在可传递依赖项

我正在部署一个Google Cloud函数,但它未能部署,因为它有时找不到模块
@Google Cloud/pubsub
,当它找到它时,它反而由于来自pubsub包的可传递依赖项而失败。我在
@googlecloud/storage
中也遇到过这种情况,但从未解决过

有关此问题的示例,请参阅本文下面的日志屏幕截图。它显示了两个连续的部署

  • 在第一次部署中,未找到
    @googlecloud/pubsub
    ,尽管它在package.json中列出
  • 在第二次部署中,找到了
    pubsub
    包(!),但它在可传递依赖项
    googlegax
    上失败
我尝试过的事情

  • 使用谷歌云构建部署,连接到我的github repo(Deplyment失败)
  • 从本地命令行部署。请参阅下面package.json中的脚本target
    deployAnalyzer
    。(部署失败,与谷歌云生成的错误相同)
  • 将函数本地部署到函数框架。请参见下面的脚本目标
    devFunctionAnalyzer
    。(deployment工作,可以调用该函数)
  • 使用
    pack
    本地构建,以重复与谷歌云构建相同的构建过程。结果:图像构建和运行良好
简而言之:它在本地运行良好,无论是在函数框架中还是运行使用GoogleNodeJS构建包构建的docker映像

完整代码

正在进行的工作:

具有一个依赖项的最低回购协议,失败时出现相同错误:

编辑 添加了剥离回购的链接,该链接在没有所有应用程序代码的情况下说明了问题。现在只有一个依赖项

package.json

{
  "name": "ornitho-de-monitor",
  "version": "0.0.1",
  "description": "Collect latest interesting observations from ornitho.de",
  "main": "src/index.js",
  "engines": {
    "node": ">=12.13"
  },
  "scripts": {
    "devFunctionAnalyzer": "npx functions-framework --target=analyzeObservations --signature-type=event",
    "devFunctionNotifier": "npx functions-framework --target=notifyAll --signature-type=event",
    "buildCloudRunContainer": "gcloud builds submit --tag gcr.io/ornitho-de-monitor/ornitho-de-scraper",
    "deployCloudRunContainer": "gcloud run deploy ornitho-de-scraper --region=europe-west6 --image gcr.io/ornitho-de-monitor/ornitho-de-scraper --platform managed",
    "deployAnalyzer": "gcloud functions deploy analyzeObservations --source=./src --entry-point=analyzeObservations --runtime nodejs12 --memory=256MB --max-instances=3 --trigger-topic=ornitho-bus",
    "deployNotifier": "gcloud functions deploy notifyAll --source=./src --entry-point=notifyAll --runtime nodejs12 --memory=256MB --max-instances=3 --trigger-topic=ornitho-bus",
    "invoke": "gcloud functions call ornitho-de-monitor --data '{\"name\":\"Keyboard Cat\"}'",
    "invokeEncoded": "DATA=$(printf 'Hello!'|base64) && gcloud functions call helloPubSub --data '{\"data\":\"'$DATA'\"}'",
    "viewFunctionLogs": "gcloud functions logs read ornitho-de-monitor",
    "serveTestFile": "cd testdata && python -m SimpleHTTPServer 8000",
    "test": "echo \"No test specified\" && exit 0"
  },
  "author": "Anders Weijnitz",
  "license": "ISC",
  "dependencies": {
    "@google-cloud/pubsub": "^2.7.0",
    "@google-cloud/storage": "^5.7.0",
    "express": "^4.17.1",
    "express-async-handler": "^1.1.4",
    "express-rate-limit": "^5.2.3",
    "knex": "^0.21.15",
    "pg": "^8.5.1"
  },
  "devDependencies": {
    "@google-cloud/functions-framework": "^1.7.1"
  }
}
这些是来自
cloudbuild.yaml

steps:
  # Retrieve credentials from Fort Knox
  - name: 'gcr.io/cloud-builders/gcloud'
    entrypoint: 'bash'
    args: [ '-c', "gcloud secrets versions access latest --secret=ornitho-pubsub --format='get(payload.data)' | tr '_-' '/+' | base64 -d > pubsubkey.json" ]
  # Install dependencies
  - name: 'gcr.io/cloud-builders/npm'
    args: [ 'install' ]
    dir: '.'
  # Run tests
  - name: 'gcr.io/cloud-builders/npm'
    args: [ 'test' ]
    dir: '.'
  # Deploy the notifier function
  - name: 'gcr.io/cloud-builders/gcloud'
    args:
      - 'functions'
      - 'deploy'
      - 'notifyAll'
      - '--source=./src'
      - '--entry-point=notifyAll'
      - '--runtime=nodejs12'
      - '--memory=128MB'
      - '--max-instances=3'
      - '--trigger-topic=ornitho-bus'
  # Deploy the analyzer function
  - name: 'gcr.io/cloud-builders/gcloud'
    args:
      - 'functions'
      - 'deploy'
      - 'analyzeObservations'
      - '--source=./src'
      - '--entry-point=analyzeObservations'
      - '--runtime=nodejs12'
      - '--memory=128MB'
      - '--max-instances=3'
      - '--trigger-topic=ornitho-bus'
解决了

实际上,
--source
参数不应该指向应用程序源的位置,而是指向package.json所在的项目根的位置。坏:
--source=。/src
好:
--source=


有关更多详细信息,请参阅github.com/aweijnitz/cloud-functions-dependency-test-01–

我认为您的package.json在云函数方面可能存在错误。如果我们读到这里。。。似乎(目前)只支持节点8和节点10,但您的package.json似乎说它需要节点12…?谢谢!谷歌云功能支持nodejsv12已经有一段时间了。文档中也有说明(您的链接是早期的快速入门指南)。也就是说,我与节点v10有相同的行为。支持Node.jsv12。考试怎么样?从最基本的package.json开始(例如,在GCP控制台中找到的与示例云函数关联的package.json)。。。然后添加依赖项的最新版本,而不添加其他内容。看看package.json是否有不同的结果。仍然让我停顿的是对express的依赖。你有多大信心需要这些?我也试过了。只是一个向PubSub发布“Hello World”的两行程序。一个依赖项。不走运。这与谷歌的例子基本相同。不起作用。它找不到模块@googlecloud/pubsub
{“name”:“cloud-functions-test-01”,“main”:“src/index.js”,“scripts”:{“deploy”:“gcloud functions deploy helloWorld--source=。/src--entry point=helloWorld--runtime nodejs12--memory=256MB--max instances=3--trigger topic ornitho bus”,},“author:“AW”,license:“ISC”依赖项“{“@google cloud/pubsub”:“^2.7.0”}
我看到您的源代码位于一个名为“/src”的目录中。只需检查一下……package.json也在那里?……哦……然后我注意到您指向……的链接。package.json不应该在src目录中,否则就好像您没有提供package.json一样