我的网站在服务器和开发PC(Windows 7)中均运行良好。
现在,我想迁移到Node Js
在我的开发机中应遵循哪些步骤??
我尝试过 npm install odbc, npm install ibm_db, npm安装win32ole等。
全部给出错误。 (或者我不知道如何安装,它需要python错误之类的东西)
我想使用ODBC dns连接Informix服务器,因为我正在PHP中无缝连接。
简单的mongoDB,mysql等连接正常工作,但notifyix无法正常工作。
答案 0 :(得分:1)
首先,您应该升级Informix产品。 IDS 11.10太旧了。 ODBC 3.80甚至更老(2002年发布的CSDK 2.70中包含3.80)。
新的Informix服务器(例如12.10.xC11)提供了使用MongoDB驱动程序直接连接的选项。 看:
使用JSON侦听器,无需通过ODBC驱动程序来连接到IDS服务器。 Uou可以使用连接到MongoDB的同一NodeJS模块。
不过,如果您不能升级引擎,则有几个Informix NodeJS开源驱动程序,但是所有这些驱动程序都需要Informix ODBC驱动程序和ESQL / C库的更新版本。
https://github.com/OpenInformix/IfxNode/blob/master/LocalBuildWindows.md https://www.npmjs.com/package/informix
最新的ODBC驱动程序是4.10.xC11。
Wankdander的“ node-odbc”模块在Windows上可以正常工作:
https://github.com/wankdanker/node-odbc
我使用CSDK 4.10.FC8中的Informix ODBC驱动程序对其进行了测试,并且由于它使用ODBC标准调用,所以它甚至可以与3.80年代的版本一起使用。
--------编辑-------
从头开始进行测试。 您将需要:
步骤是:
在设置了编译器环境的情况下开始会话:
C:\Program Files (x86)\Microsoft Visual Studio 14.0>d:
D:\Infx>cd infx\nodejs811
D:\Infx\nodejs811>dir
Volume in drive D is Data750
Volume Serial Number is F0B7-2E44
Directory of D:\Infx\nodejs811
21/06/2018 12:26 <DIR> .
21/06/2018 12:26 <DIR> ..
12/06/2018 22:43 22,778,520 node.exe
11/02/2018 01:08 702 nodevars.bat
11/02/2018 01:08 8,985 node_etw_provider.man
21/06/2018 12:26 <DIR> node_modules
11/02/2018 00:08 4,974 node_perfctr_provider.man
11/02/2018 01:08 867 npm
11/02/2018 00:08 483 npm.cmd
12/06/2018 01:50 867 npx
12/06/2018 01:50 483 npx.cmd
8 File(s) 22,795,881 bytes
3 Dir(s) 201,607,630,848 bytes free
D:\Infx\nodejs811>
设置nodeJS环境:
D:\Infx\nodejs811>nodevars.bat
Your environment has been set up for using Node.js 8.11.3 (x64) and npm.
C:\Users\Administrator>
安装node-gyp(用于构建odbc模块)
C:\Users\Administrator>npm install node-gyp
npm WARN Administrator No description
npm WARN Administrator No repository field.
npm WARN Administrator No README data
npm WARN Administrator No license field.
+ node-gyp@3.7.0
added 1 package in 1.821s
C:\Users\Administrator>
安装odbc模块:
C:\Users\Administrator>npm install odbc
> odbc@1.4.1 install C:\Users\Administrator\node_modules\odbc
> node-gyp configure build
C:\Users\Administrator\node_modules\odbc>if not defined npm_config_node_gyp (node "D:\Infx\nodejs811\node_modules\npm\no
de_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" configure build ) else (node "D:\In
fx\nodejs811\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" configure build )
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
odbc.cpp
odbc_connection.cpp
odbc_statement.cpp
odbc_result.cpp
....
....
dynodbc.cpp
win_delay_load_hook.cc
strptime.c
Creating library C:\Users\Administrator\node_modules\odbc\build\Release\odbc_bindings.lib and object C:\Users\Admi
nistrator\node_modules\odbc\build\Release\odbc_bindings.exp
Generating code
Finished generating code
odbc_bindings.vcxproj -> C:\Users\Administrator\node_modules\odbc\build\Release\\odbc_bindings.node
odbc_bindings.vcxproj -> C:\Users\Administrator\node_modules\odbc\build\Release\odbc_bindings.pdb (Full PDB)
npm WARN Administrator No description
npm WARN Administrator No repository field.
npm WARN Administrator No README data
npm WARN Administrator No license field.
+ odbc@1.4.1
added 3 packages in 31.827s
C:\Users\Administrator>
检查它是否与连接到Informix ODBC DSN的简单js脚本一起使用:
C:\Users\Administrator>type test.js
var db = require('odbc')()
, cn = "DSN=ids1210;UID=informix;PWD=dummypwd;";
db.open(cn, function (err) {
if (err) return console.log(err);
db.query('select * from systables where tabid = 1', [42], function (err, data) {
if (err) console.log(err);
console.log(data);
db.close(function () {
console.log('done');
});
});
});
C:\Users\Administrator>node test.js
[ { tabname: 'systables',
owner: 'informix ',
partnum: 1049238,
tabid: 1,
rowsize: 500,
ncols: 26,
nindexes: 2,
nrows: 177,
created: '2017-10-18',
version: 65831,
tabtype: 'T',
locklevel: 'R',
npused: 7,
fextsize: 32,
nextsize: 32,
flags: 0,
site: null,
dbname: null,
type_xid: 0,
am_id: 0,
pagesize: 4096,
ustlowts: 2018-06-17T00:11:37.000Z,
secpolicyid: 0,
protgranularity: ' ',
statchange: null,
statlevel: ' ' } ]
done
C:\Users\Administrator>
我没有ODBC 3.80,我用4.10进行了测试,但是从理论上讲,无论驱动程序的版本如何,它都应该可以工作。 没有ODBC 3.8的64位版本,因此您将需要使用32位版本的NodeJS并以32位模式进行编译。