【问题标题】:Google Cloud Debugger not working on Node.js谷歌云调试器不适用于 Node.js
【发布时间】:2021-09-15 12:24:56
【问题描述】:

我的 Node.js API 服务托管在标准环境中运行的谷歌云 App Engine 上。 我已按照所有步骤操作,但调试代理会抛出以下消息:

@google-cloud/debug-agent 重新注册调试对象 xxx-backend 失败:错误:{ 处的文件不存在,或者不是文件。 ENOENT: 没有这样的文件或目录,lstat '/workspace/{'

我的 app.ts 文件顶部有这段代码: require('@google-cloud/debug-agent').start();

我的 Node.js 版本是:14.17.0

更新软件包并再次安装后,错误是:

Error: The file at { does not exist, or it is not a file. ENOENT: no such file or directory, lstat '/workspace/{' at Object.realpathSync (fs.js:1796:7) at GoogleAuth._getApplicationCredentialsFromFilePath (/workspace/node_modules/google-auth-library/build/src/auth/googleauth.js:263:27) at GoogleAuth._tryGetApplicationCredentialsFromEnvironmentVariable (/workspace/node_modules/google-auth-library/build/src/auth/googleauth.js:206:25) at GoogleAuth.getApplicationDefaultAsync (/workspace/node_modules/google-auth-library/build/src/auth/googleauth.js:136:24) at GoogleAuth.getClient (/workspace/node_modules/google-auth-library/build/src/auth/googleauth.js:551:28) at GrpcClient._getCredentials (/workspace/node_modules/@google-cloud/logging/node_modules/google-gax/build/src/grpc.js:145:40) at GrpcClient.createStub (/workspace/node_modules/@google-cloud/logging/node_modules/google-gax/build/src/grpc.js:308:34) at processTicksAndRejections (internal/process/task_queues.js:95:5)

【问题讨论】:

  • 该消息通常表示该软件包未安装。确认您已安装它并显示在您的 package.json 中
  • @NoCommandLine 感谢您的回复!它已经存在但我再次安装它现在错误更清楚但仍然不知道如何修复它。我已经更新了帖子上的错误信息。

标签: node.js google-app-engine google-cloud-platform google-appengine-node google-cloud-debugger


【解决方案1】:

环境变量 GOOGLE_APPLICATION_CREDENTIALS 用于为您的应用程序代码提供身份验证凭据。

如果在该实例上启用了 Stackdriver Debugger API 访问范围,则 Stackdriver Debugger 代理无需手动为在 Google Cloud Platform 上运行的实例提供身份验证凭据即可工作。对于 Google App Engine 实例,如果已为您的项目启用了 Debugger API(这是默认设置),则这是自动的。如果您在其他地方(例如本地、本地或其他云提供商)运行,则需要手动提供凭据。有关详细信息,请参阅文档。

您将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为文件“{”,这就是您收到错误的原因。

看起来您正在 Google Cloud Platform 上运行代码,这就是您的代码即使在删除 环境变量 GOOGLE_APPLICATION_CREDENTIALS。

【讨论】:

  • 是的,我正在使用 GCP 应用引擎。谢谢您的答复。 GOOGLE_APPLICATION_CREDENTIAL 环境变量是如何设置为文件“{”的?如果将其设置为正确的文件,那么它不会引发问题吗? (那么正确的文件是什么?)
  • 在代码中某处设置文件“{”。检查您设置该文件的代码。您说删除该环境变量后您的代码正在运行。所以我假设通过那个环境变量你正在设置那个文件。要对应用程序进行身份验证,请遵循 documentation
【解决方案2】:

好的,所以我通过尝试一些东西得到了答案。基本上,我的秘密中有 GOOGLE_APPLICATION_CREDENTIALS。 我的应用程序部署在 GAE 中,因此我不需要凭据。我之前使用另一个应用程序进行托管,所以我把它藏在我的秘密中。 一旦我删除了那个秘密,它就开始起作用了。

但是为什么会出现这个错误呢?凭据是正确的,所以它应该可以正常工作吧?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    相关资源
    最近更新 更多