我正在尝试关注Thrift的Node.JS tutorial,但得到了Cannot read property 'tls' of undefined
以下是一些背景信息:
操作系统:Windows 7
Node.JS版本:v0.10.34
Thrift编译器版本:0.9.2
以下是我的步骤:
ProjRoot
thrift.0.9.2 -r --gen js:node tutorial.thrift
和shared.thrift
使用以下内容创建package.json
:
{
"name": "thrifttest",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"thrift": "~0.9.2"
}
}
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
这是一个错误吗?还是我忽略了什么?
答案 0 :(得分:7)
原始回答
我通过更改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, {...}, {})
^
解决问题