我正在尝试关注Thrift的Node.JS教程,但得到了Cannot read property 'tls' of undefined
以下是一些背景信息:
操作系统:Windows 7
Node.JS版本:v0.10.34
Thrift编译器版本:0.9.2
这是我的步骤:
ProjRootthrift.0.9.2 -r --gen js:node tutorial.thrift和step获得的exe生成.js文件shared.thrift创建package.json以下内容:
{
"name": "thrifttest",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"thrift": "~0.9.2"
}
}
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)
这是一个错误吗?还是我忽略了什么?
原始答案
我通过更改server.js中的代码来临时解决此问题:
if (options.tls) {
return tls.createServer(options.tls, serverImpl);
} else {
return net.createServer(serverImpl);
}
Run Code Online (Sandbox Code Playgroud)
至
return net.createServer(serverImpl);
Run Code Online (Sandbox Code Playgroud)
那就是删除if声明.
我非常期待能够真正解决问题的解决方案
更新的答案 创建服务器时,
var server = thrift.createServer(Calculator, {...})
Run Code Online (Sandbox Code Playgroud)
该createServer签名想到第三个参数options,传递一个空对象createServer
var server = thrift.createServer(Calculator, {...}, {})
^
Run Code Online (Sandbox Code Playgroud)
解决了这个问题
| 归档时间: |
|
| 查看次数: |
1114 次 |
| 最近记录: |