首页 > 解决方案 > NodeJS GCP pubsub 发布错误:t.topic(...).publish 不是函数

问题描述

我正在尝试将数据从我的节点服务器写入触发 GCP 云功能的 pubsub 主题。我的代码或多或少直接来自GCP Pubsub 教程

但是,我在发布时不断收到此错误:

(node:60085) UnhandledPromiseRejectionWarning: TypeError: l.topic(...).publish is not a function
at /Users/kb/Documents/coding/maple/dist/server.bundle.js:100:1697
at Layer.handle [as handle_request] (/Users/kb/Documents/coding/maple/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/kb/Documents/coding/maple/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/Users/kb/Documents/coding/maple/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/Users/kb/Documents/coding/maple/node_modules/express/lib/router/layer.js:95:5)
at /Users/kb/Documents/coding/maple/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/Users/kb/Documents/coding/maple/node_modules/express/lib/router/index.js:335:12)
at next (/Users/kb/Documents/coding/maple/node_modules/express/lib/router/index.js:275:10)
at SendStream.error (/Users/kb/Documents/coding/maple/node_modules/serve-static/index.js:121:7)
at SendStream.emit (events.js:182:13)

我已经确认没有消息发送到我的 Pubsub 主题,并且我的 GCP 功能没有被触发。

这是我的代码:

var processedData = processResultsData(data);
const dataBuffer = Buffer.from(processedData);
console.log("About to push to pubsub");
const messageId = await pubsub.topic(TOPIC_NAME).publish(dataBuffer);
console.log(`Message ${messageId} published.`);

标签: node.jsgoogle-cloud-platformgoogle-cloud-functionsgoogle-cloud-pubsub

解决方案


本教程适用于当前版本的节点客户端库 (0.24.1)。我的猜测是您安装了旧版本的客户端库。检查 package.json 中的版本,并将其设置为“最新”或“0.24.1”。


推荐阅读