我正在尝试使用node-webkit创建桌面应用程序。该应用程序查询Oracle数据库。要建立与数据库的连接,我使用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
然后我创建了以下node-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": "*"
}
}
但是当我在node-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
答案 0 :(得分:1)
我认为ODBC驱动程序是32位。
因此,请按照以下步骤操作:
将node-odbc二进制模块编译为32位
node-gyp clean configure build --arch=ia32 --msvs_version=2015
使用32位Node.js可执行文件来运行应用程序