Node.JS Thrift服务器示例给出;无法读取属性';tls&x27;“未定义”的定义;
我正试图遵循Thrift的,但无法读取未定义的属性“tls” 以下是一些背景信息: 操作系统:Windows7 Node.JS版本:v0.10.34 节俭编译器版本:0.9.2 以下是我的步骤:Node.JS Thrift服务器示例给出;无法读取属性';tls&x27;“未定义”的定义;,node.js,thrift,Node.js,Thrift,我正试图遵循Thrift的,但无法读取未定义的属性“tls” 以下是一些背景信息: 操作系统:Windows7 Node.JS版本:v0.10.34 节俭编译器版本:0.9.2 以下是我的步骤: 获取thrift v0.9.2窗口 将tutorial.thrift和shared.thrift(来自tutorial)复制到空的控制器ProjRoot 使用从step1thrift.0.9.2-r--gen js:node tutorial.thrift和shared.thrift获得的exe生成.j
ProjRoot
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"
}
}
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
…\ProjRoot\node\u modules\thrift\lib\thrift\server.js:89
if(options.tls){
^
TypeError:无法读取未定义的属性“tls”
在Object.exports.createMultiplexServer(…\ProjRoot\node\u modules\thrift\lib\thrift\s
(服务器:89:14)
在Object.exports.createServer(…\ProjRoot\node\u modules\thrift\lib\thrift\server.js:106:18)
在对象上。(…\ProjRoot\NodeServer.js:8:21)
在模块处编译(Module.js:456:26)
在Object.Module.\u extensions..js(Module.js:474:10)
在Module.load(Module.js:356:32)
在Function.Module.\u加载(Module.js:312:12)
位于Function.Module.runMain(Module.js:497:10)
启动时(node.js:119:16)
在node.js:929:3
这是一个bug?还是我忽略了什么?原始答案 我通过将server.js上的代码从以下位置更改为临时解决此问题:
if (options.tls) {
return tls.createServer(options.tls, serverImpl);
} else {
return net.createServer(serverImpl);
}
到
这就是删除if
语句
我当然期待一个真正解决这个问题的解决方案
更新的答案
创建服务器时
var server = thrift.createServer(Calculator, {...})
createServer
签名需要第三个参数options
,将空对象传递给createServer
var server = thrift.createServer(Calculator, {...}, {})
^
解决了两个thrift文件的问题链接:,在thrift用户邮件列表上讨论此问题可能是个好主意。
var server = thrift.createServer(Calculator, {...}, {})
^