2017-12-01 11 views
0

チケットを印刷するためにhttpsにソケットを持つノードサーバーがあります。httpsのソケットioでノードが盗まれた

node: ../src/util-inl.h:196: TypeName* node::Unwrap(v8::Local<v8::Object>) [with TypeName = node::TLSWrap]: Assertion `(object->InternalFieldCount()) > (0)' failed. 
Abandon 

ので、私はネット上で探し、人々はバージョンノードを変更するには言った:私は昼食サーバが、それは大丈夫だが、私は、サーバーのクラッシュを印刷し、このエラーを表示するためにソケットを送信するとき 私は、HTTPにだけ使用し、それが正常に動作する前に

/** 
* Created by thibault on 13/09/17. 
*/ 

'use strict'; 

let serverSettings = require('./config').serverSettings; 
let printers   = require('./config').printers; 
let authkeyUdooServer = require('./config').authkeyUdoo; 
let Log    = require('./utils/log'); 
let port    = serverSettings.port; 
let bodyParser  = require('body-parser'); 
let socket   = require('socket.io'); 
let pdf    = require('html-pdf'); 
let express   = require('express'); 
let printer   = require('printer'); 
let moment   = require('moment'); 
var server   = (serverSettings.useSSL) ? require('https') : require('http'); 
let fs    = require('fs'); 
let he    = require('he'); 
let app    = express(); 
let logInstantce = new Log(); 



/* 
|------------------------------------------------------------------------------ 
| Body parser 
|------------------------------------------------------------------------------ 
*/ 
app.use(bodyParser.json());  // to support JSON-encoded bodies 
app.use(bodyParser.urlencoded({ // to support URL-encoded bodies 
    extended: true, 
    type: 'application/x-www-form-urlencoded' 
})); 

if (serverSettings.useSSL) 
{ 
    var credentials = { 
     key: fs.readFileSync(serverSettings.SSL_KEY), 
     cert: fs.readFileSync(serverSettings.SSL_CERT) 
    }; 
    server   = server.Server(credentials, app); 
} 
else 
{ 
    server = server.Server(app); 
} 
server.listen(port, function() 
{ 
    console.log('\n'); 
    console.log(' |------------------------------------------------------------'); 
    console.log(' |'); 
    console.log(' | Server NodeSync started'); 
    console.log(' |'); 
    console.log(' |------------------------------------------------------------'); 
    console.log(' |'); 
    console.log(' | Port  : ' + serverSettings.port); 
    console.log(' | SSL ? : ' + ((serverSettings.useSSL) ? 'Yes' : 'No')); 
    let url = 'http://' + serverSettings.url; 
    if (serverSettings.useSSL) 
    { 
     console.log(' | SSL key : ' + serverSettings.SSL_KEY); 
     console.log(' | SSL cert : ' + serverSettings.SSL_CERT); 
     url = 'https://' + serverSettings.url; 
    } 
    console.log(' | URL  : ' + url); 
    console.log(' |'); 
    console.log(' |------------------------------------------------------------\n\n'); 
}); 

let io = socket(server); 

io.on('connection', (socket) => { 
    logInstantce.success('New socket connection'); 
    console.log('socket started! At ' + serverSettings.url); 

    socket.on('printTicket', (data) => 
    { 
console.log('je passe'); 
     let htmlString   = he.decode(data.html); 
     let width    = data.width; 
     let height    = data.height; 
     let nbPrint    = data.nbPrint; 
     let typePrinter   = data.typePrinter; 
     let authkeyUdooAccount = data.authkeyUdooAccount; 
     if (authkeyUdooAccount === authkeyUdooServer) 
     { 
      let options = { 
       "height": height + 'px',  // allowed units: mm, cm, in, px 
       "width": width + 'px', 
      }; 

      let nameFile = 'ticket_' + moment().format('YYYYMMDDHHmmss'); 

      fs.writeFile('html/' + nameFile + '.html', htmlString, (err) => 
      { 
       if (err) 
       { 
        logInstantce.error('create html err : ' + err); 
        socket.emit('printError', 'create html err : ' + err); 
       } 
       else 
       { 
        let html = fs.readFileSync('html/' + nameFile + '.html', 'utf8'); 

        pdf.create(html, options).toFile('pdf/' + nameFile + '.pdf', (err, res) => 
        { 
         if (err) 
         { 
          logInstantce.error('create pdf err : ' + err); 
          socket.emit('printError', 'create pdf err : ' + err); 
         } 
         else 
         { 
          for (let i = 0; i < nbPrint; i++) 
          { 
           printer.printDirect({ 
            printer: printers[typePrinter], 
            data: fs.readFileSync('pdf/' + nameFile + '.pdf'), 
            type: 'PDF', 
            success: (id) => 
              { 
               logInstantce.success('printed with id ' + id); 
               if (i === (nbPrint - 1)) 
               { 
                socket.emit('printSuccess'); 
               } 
              }, 
            error: (err) => 
              { 
               logInstantce.error('error on printing: ' + err); 
               if (i === (nbPrint - 1)) 
               { 
                socket.emit('printError', 'error on printing: ' + err); 
               } 
              } 
           }) 
          } 
         } 

         //suppression des fichiers 
         fs.unlink('./html/' + nameFile + '.html', (err) => 
         { 
          if(err) logInstantce.error('create html err : ' + err); 

          fs.unlink('./pdf/' + nameFile + '.pdf', (err) => 
          { 
           if(err) logInstantce.error('create pdf err : ' + err); 

           logInstantce.success('file pdf and html deleted successfully : ' + nameFile); 
          }); 
         }); 
        }); 
       } 
      }); 
     } 
     else 
     { 
      logInstantce.error('wrong autkey udoo'); 
      socket.emit('printError', 'wrong autkey udoo'); 
     } 
    }); 
}); 

:私はあなたのコードを表示

...再び3.8、4.4、8.4、現在9.2とエラーポップにバージョンノードを変更します。 証明書は良いbeacauseです。もし私がサーバーのURLに行くことができれば、それは他のプロジェクトで使用されています。あなたのアイデアを持っている場合

ので、私はそれを取る:)事前

答えて

0

で おかげで私は解決策を見つけました。 私はノードのバージョン6.0.0を設定し、私のノードパッケージをダウンロードしました。それは良いです:)

関連する問題