查询数据存储模拟器时如何强制@google-cloud/datastore 使用'http'
How can you force @google-cloud/datastore to use 'http' when you query your datastore emulator
我有一个节点 + vuejs 应用程序,我试图从中查询我的本地数据库(使用数据存储模拟器创建)。
我的代码是这样的
const { Datastore } = require('@google-cloud/datastore')
const datastore = new Datastore({
apiEndpoint: "http://localhost:<port>",
projectId: <my_project_name>
})
然后我尝试 运行 Google 的 documentation
上的示例查询之一
我的输出显示连接成功,但随后我在控制台中收到以下错误
POST https://localhost:<port>/$rpc/google.datastore.v1.Datastore/RunQuery net::ERR_SSL_PROTOCOL_ERROR
从错误中,我看到它已将 http://localhost:<port>
更改为 https://localhost:<port>
即它正在为我的本地主机强制使用 https
协议,但显然失败了。
我是否必须指定 something/option 以确保它在我进行本地调用或使用数据存储模拟器时使用 http
?
我找到了解决方案并将其发布以防其他人遇到问题。
我开始检查代码本身并发现了对此 link 的引用。页面显示
.....默认情况下,客户端库将使用 gRPC,它是基于 HTTP/2 的二进制传输。它是 Node.js 实现,@grpc/grpc-js,使用 Node.js http2 模块。
如果您需要在非 Node.js 环境中使用客户端库,或者当 gRPC 因任何原因无法使用时,您可以使用 HTTP/1 回退模式。在这种模式下,使用一种特殊的浏览器兼容的传输实现来代替 gRPC 传输。
在浏览器上下文中(如果定义了 window 对象)自动启用回退模式;如果需要覆盖此行为,请将 options.fallback 设置为 false...
当我在选项中添加 fallback:false
时,一切正常,即它不再重定向到 https 并连接到我的数据模拟器。
我进一步考虑了一下,我相信这种行为是因为我的代码是在 renderer process
中为 Vuejs 应用程序编写的,这意味着有一个 windows
对象。为了确认,我将代码移到了 main process
并且没有包含 fallback
选项并且它起作用了。
我有一个节点 + vuejs 应用程序,我试图从中查询我的本地数据库(使用数据存储模拟器创建)。
我的代码是这样的
const { Datastore } = require('@google-cloud/datastore')
const datastore = new Datastore({
apiEndpoint: "http://localhost:<port>",
projectId: <my_project_name>
})
然后我尝试 运行 Google 的 documentation
上的示例查询之一我的输出显示连接成功,但随后我在控制台中收到以下错误
POST https://localhost:<port>/$rpc/google.datastore.v1.Datastore/RunQuery net::ERR_SSL_PROTOCOL_ERROR
从错误中,我看到它已将 http://localhost:<port>
更改为 https://localhost:<port>
即它正在为我的本地主机强制使用 https
协议,但显然失败了。
我是否必须指定 something/option 以确保它在我进行本地调用或使用数据存储模拟器时使用 http
?
我找到了解决方案并将其发布以防其他人遇到问题。
我开始检查代码本身并发现了对此 link 的引用。页面显示
.....默认情况下,客户端库将使用 gRPC,它是基于 HTTP/2 的二进制传输。它是 Node.js 实现,@grpc/grpc-js,使用 Node.js http2 模块。 如果您需要在非 Node.js 环境中使用客户端库,或者当 gRPC 因任何原因无法使用时,您可以使用 HTTP/1 回退模式。在这种模式下,使用一种特殊的浏览器兼容的传输实现来代替 gRPC 传输。 在浏览器上下文中(如果定义了 window 对象)自动启用回退模式;如果需要覆盖此行为,请将 options.fallback 设置为 false...
当我在选项中添加 fallback:false
时,一切正常,即它不再重定向到 https 并连接到我的数据模拟器。
我进一步考虑了一下,我相信这种行为是因为我的代码是在 renderer process
中为 Vuejs 应用程序编写的,这意味着有一个 windows
对象。为了确认,我将代码移到了 main process
并且没有包含 fallback
选项并且它起作用了。