Node.JS Thrift 服务器示例给出 "Cannot read property ' tls' of undefined"

标签 node.js thrift

我正在尝试遵循 Thrift 的 Node.JS tutorial 但得到了 Cannot read property 'tls' of undefined

这里有一些背景信息:

操作系统:Windows 7

Node.JS 版本:v0.10.34

Thrift 编译器版本:0.9.2

这是我的步骤:

  1. Get a thrift v0.9.2 Windows here
  2. 将 tutorial.thrift 和 shared.thrift(来自教程)复制到一个空目录 ProjRoot
  3. 使用从步骤 1 thrift.0.9.2 -r --gen js:node tutorial.thriftshared.thrift 获得的 exe 生成 .js 文件
  4. 使用以下内容创建 package.json:

    {
      "name": "thrifttest",
      "version": "0.0.0",
      "private": true,
      "scripts": {
        "start": "node ./bin/www"
      },
      "dependencies": {
        "thrift": "~0.9.2"
      }
    }
    
  5. Server 部分下的服务器端代码放入 NodeServer.js
  6. 在终端中,运行 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/

相关文章:

node.js - 使用 Node/Express 将文件流式传输给用户下载

java - maven项目执行失败 "maven-thrift-plugin"

java - 我想在一种交通工具上使用多种服务(Thrift)

Hadoop 基础知识 : What do I do with the output?

javascript - 更改要通过代码打开的新端口的状态

javascript - 如何使用 nodejs 通过套接字从服务器到客户端进行通信?

hadoop - hadoop的各种大数据传输方法相互比较如何?

python - 使用python通过thrift从hbase读取数据时出错

node.js - nodeJs/Express 处理丢失的静态文件

node.js - heroku config vars 可以是 bool 值并且 ejs 可以访问它吗?