2015-06-16 5 views
0

Я пытаюсь создать настольное приложение, используя node-webkit. Приложение запрашивает базу данных Oracle. Чтобы установить соединение с базой данных, я использую node-odbc.Экспериментация с node-webkit: node-odbc не работает

Я проверил предварительный тест с node.js, чтобы убедиться, что я действительно могу запросить базу данных с помощью установленных драйверов Oracle. Вот что я сделал:

index.js:

var db = require('odbc')(); 
var cn = 'DSN=****;Uid=****;Pwd=****;'; 

db.open(cn, function (err) { 
    if (err) return console.log(err); 

    db.query('select 42 from dual', function (err, data) { 
    if (err) console.log(err); 

    console.log(data); 

    db.close(function() { 
     console.log('done'); 
    }); 
    }); 
}); 

Когда я запускаю это, я получаю следующий вывод, как и ожидалось:

> node index.js 
[ { '42': 42 } ] 
done 

Затем я создал следующий пакет узла WebKit:

index.html:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Hello World!</title> 
    <script type="text/javascript"> 
    var db = require('odbc')(); 
    var cn = 'DSN=****;Uid=****;Pwd=****;'; 

    function queryDb() { 
     db.open(cn, function (err) { 
      if (err) return console.log(err); 

      db.query('select 42 from dual', function (err, data) { 
      if (err) console.log(err); 

      console.log(data); 

      db.close(function() { 
       console.log('done'); 
      }); 
      }); 
     }); 
    } 
    </script> 
    </head> 
    <body> 
    <input type="button" onclick="queryDb()" value="Query" /> 
    </body> 
</html> 

package.json:

{ 
    "name": "nw-demo-odbc", 
    "version": "0.0.1", 
    "main": "index.html", 
    "dependencies": 
    { 
    "odbc": "*" 
    } 
} 

Но когда я запускаю это в узле-WebKit и откройте консоль, появляется следующее сообщение об ошибке:

C:\path\to\package\node_modules\odbc\node_modules\bindings\bindings.js:79 
    Uncaught Error: %1 is not a valid Win32 application. 
C:\path\to\package\node_modules\odbc\build\Release\odbc_bindings.node 
  • Я использую ЯО. js v0.12.2.
+0

Это на той же машине, с которой вы тестировали, когда она работала? Как раз на основании ошибки, она выглядит как 64-битная и 32-разрядная проблема. – tier1

+0

Такая же машина. Каталоги рядом. Установки node.js, node-webkit - x86. Клиент Oracle 32 бит. Моя машина 64 бит. – Krumia

ответ

1

Я полагаю, что драйверы ODBC 32-разрядные.

Поэтому следующие шаги:

  1. компилирования узел-бинарные модули ODBC, как 32 бит

    node-gyp clean configure build --arch=ia32 --msvs_version=2015 
    
  2. Используйте 32-битный исполняемый Node.js для запуска приложения