/ / Node.JS L'esempio del server dell'usato fornisce "Impossibile leggere la proprietà 'tls' di undefined" - node.js, parsimonia

L'esempio del server Node.JS Thrift fornisce "Impossibile leggere la proprietà 'tls' di undefined" - node.js, parsimonia

Sto cercando di seguire Thrift "s Tutorial Node.JS ma ottenuto Cannot read property "tls" of undefined

Ecco alcune informazioni di base:

Sistema operativo: Windows 7

Versione Node.JS: v0.10.34

Versione del compilatore di risparmio: 0.9.2

Ecco i miei passi:

  1. Ottieni una parsimonia v0.9.2 Windows Qui
  2. Copia tutorial.thrift e shared.thrift (da tutorial) in un regista vuoto ProjRoot
  3. Genera file .js con l'exe ottenuto dal passaggio 1 thrift.0.9.2 -r --gen js:node tutorial.thrift e shared.thrift
  4. creare package.json con il seguente contenuto:

    {
    "name": "thrifttest",
    "version": "0.0.0",
    "private": true,
    "scripts": {
    "start": "node ./bin/www"
    },
    "dependencies": {
    "thrift": "~0.9.2"
    }
    }
    
  5. mettere il codice lato server sotto il server sezione in NodeServer.js
  6. Nel terminale, esegui npm install poi node NodeServer.js

E ho ricevuto il seguente errore:

...ProjRootnode_modulesthriftlibthriftserver.js:89
if (options.tls) {
^
TypeError: Cannot read property "tls" of undefined
at Object.exports.createMultiplexServer (...ProjRootnode_modulesthriftlibthrifts
erver.js:89:14)
at Object.exports.createServer (...ProjRootnode_modulesthriftlibthriftserver.js:106:18)
at Object.<anonymous> (...ProjRootNodeServer.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

è un insetto? o sto trascurando qualcosa?

risposte:

7 per risposta № 1

Risposta originale

Ho temporaneamente risolvere questo problema modificando il codice su server.js da:

if (options.tls) {
return tls.createServer(options.tls, serverImpl);
} else {
return net.createServer(serverImpl);
}

a

return net.createServer(serverImpl);

Quello sta rimuovendo il if dichiarazione.

Non vedo l'ora di trovare una soluzione che affronti davvero il problema

Risposta aggiornata Quando si crea il server,

var server = thrift.createServer(Calculator, {...})

Il createServer la firma prevede un terzo argomento options, passando un oggetto vuoto a createServer

var server = thrift.createServer(Calculator, {...}, {})
^

risolve il problema