我正在尝试遵循 Thrift 的 Node.JS tutorial 但得到了 Cannot read property 'tls' of undefined
这里有一些背景信息:
操作系统:Windows 7
Node.JS 版本:v0.10.34
Thrift 编译器版本:0.9.2
这是我的步骤:
- Get a thrift v0.9.2 Windows here
- 将 tutorial.thrift 和 shared.thrift(来自教程)复制到一个空目录
ProjRoot
- 使用从步骤 1
thrift.0.9.2 -r --gen js:node tutorial.thrift
和shared.thrift
获得的 exe 生成 .js 文件 使用以下内容创建
package.json
:{ "name": "thrifttest", "version": "0.0.0", "private": true, "scripts": { "start": "node ./bin/www" }, "dependencies": { "thrift": "~0.9.2" } }
- 将 Server 部分下的服务器端代码放入 NodeServer.js
- 在终端中,运行
npm install
然后运行 node NodeServer.js
我得到了以下错误:
...\ProjRoot\node_modules\thrift\lib\thrift\server.js:89
if (options.tls) {
^
TypeError: Cannot read property 'tls' of undefined
at Object.exports.createMultiplexServer (...\ProjRoot\node_modules\thrift\lib\thrift\s
erver.js:89:14)
at Object.exports.createServer (...\ProjRoot\node_modules\thrift\lib\thrift\server.js:106:18)
at Object.<anonymous> (...\ProjRoot\NodeServer.js:8:21)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:929:3
这是一个错误吗?还是我忽略了什么?
最佳答案
原始答案
我通过更改 server.js 中的代码来临时解决此问题:
if (options.tls) {
return tls.createServer(options.tls, serverImpl);
} else {
return net.createServer(serverImpl);
}
到
return net.createServer(serverImpl);
那是删除 if
语句。
我绝对期待真正解决问题的解决方案
更新的答案 创建服务器时,
var server = thrift.createServer(Calculator, {...})
createServer
签名需要第三个参数options
,将空对象传递给 createServer
var server = thrift.createServer(Calculator, {...}, {})
^
解决问题
关于Node.JS Thrift 服务器示例给出 "Cannot read property ' tls' of undefined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27815798/