Windows Build
- Build Nodejs from its source
- Build Informix Nodejs driver
FYI: make sure bit architecture matches for all binary components
If you are using 64bit nodejs make sure you are using 64bit Informix Client-SDK as well.
FYI:
Prerequisite :
- Informix Client SDK 410 xC2 or above
- git
- node.js
- python (2.7.x (3.x is not supported yet))
- node-gyp
- nan
Build node.js from its source
The node.lib is needed for compiling C/C++ native addons, One of the ways to get this library is to build node.js from its source, then there will never be any compatibility issue.
FYI: The node.lib can also be obtained from node-gyp too, it is up to you to choose one of the approach.
Open VS 2017 x64 cmd
The node.js v10 is being build by using VS 2017
# Say you have extracted NodeJS sourct at **C:\work\node-v10.15.1**
cd C:\work\node-v10.15.1
SET NODE_SRC=C:\work\node-v10.15.1
vcbuild.bat nosign release x64
# or if build without OpenSSL assembler modules
vcbuild.bat nosign openssl-no-asm release x64
FYI:
vcbuild.bat nosign release x64 : Build in release mode in 64-bit computers
vcbuild.bat nosign debug x64 : Build in debug mode for 64-bit computers
vcbuild.bat nosign release : Build in release mode in 32-bit computers
vcbuild.bat clean : Clean Project
# if no build errors then
# check whether "node.lib" has built
dir node.lib /s /b
Build the Informix node.js driver
The build has dependency on
- nan
- node-gyp
- node.lib
clone the driver source code and install build dependency
cd C:\work
git clone https://github.com/OpenInformix/IfxNode.git
cd C:\work\IfxNode
# install build dependency modules
npm install nan
npm install node-gyp
Set environment and fire the driver build
Open VS 2017 x64 command window
# Let us say
# Informix Client SDK installed location is C:\Informix
# The nodejs source (with build) is at C:\work\node-v10.15.1
# The informix driver source code is at C:\work\IfxNode
# Switch "node.js" and "node-gyp" to picket from the newly build location
# (if you are using debug build then use Debug)
# SET PATH=C:\work\node-v10.15.1\Debug;C:\work\node-v10.15.1\deps\npm\bin\node-gyp-bin;%PATH%
SET PATH=C:\work\node-v10.15.1\Release;C:\work\node-v10.15.1\deps\npm\bin\node-gyp-bin;%PATH%
SET CSDK_HOME=c:\Informix
SET NODE_SRC=C:\work\node-v10.15.1
#### Fire the driver build ####
cd C:\work\IfxNode
node-gyp configure
node-gyp build --release
# or for debug build then
node-gyp build --debug
Driver binaries
# If no build error then the driver (ifx_njs_bind.node) binaries will be at
C:\work\IfxNode\build\Debug
# or
C:\work\IfxNode\build\Release
Alternative build
# you may use the Visual Studio 2017 Solution to build from source
# FYI: you still need CSDK_HOME and NODE_SRC environment to be set
C:\work\IfxNode\IfxNodeJsVS2017.sln
FYI: node-gyp build helps
| **Command** | **Description**
|:--------------|:---------------------------------------------------------------
| `help` | Shows the help dialog
| `build` | Invokes `make`/`msbuild.exe` and builds the native addon
| `clean` | Removes the `build` directory if it exists
| `configure` | Generates project build files for the current platform
| `rebuild` | Runs `clean`, `configure` and `build` all in a row
| `install` | Installs node header files for the given version
| `list` | Lists the currently installed node header versions
| `remove` | Removes the node header files for the given version
Quick test of the local build
md C:\work\t1
cd C:\work\t1
npm install bindings
# FYI: Copy the entire IfxNode dir under C:\work\t1\node_modules\ and then rename it to ifxnjs
xcopy C:\work\IfxNode C:\work\t1\node_modules\ifxnjs /s /I
copy C:\work\IfxNode\examples\SampleApp1.js
#edit the connection information of the application, then run
node SampleApp1.js
Preparing prebuilt binaries
This task is needed if you plan to use the binary for the next NPM release.
Cleanup build for prebuilt zip
del C:\work\IfxNode\build\binding.sln
del C:\work\IfxNode\build\config.gypi
del C:\work\IfxNode\build\ifx_njs_bind.vcxproj
del C:\work\IfxNode\build\ifx_njs_bind.vcxproj.filters
del C:\work\IfxNode\build\Release\ifx_njs_bind.exp
del C:\work\IfxNode\build\Release\ifx_njs_bind.lib
del C:\work\IfxNode\build\Release\ifx_njs_bind.map
del C:\work\IfxNode\build\Release\ifx_njs_bind.pdb
del /S /F /Q C:\work\IfxNode\build\Release\obj
rd /S /Q C:\work\IfxNode\build\Release\obj
Copy the ZIP to prebuilt folder
# Create a ZIP and copy to prebuilt folder
# you may use 7zip to create a zip of C:\work\IfxNode\build
# Then copy it to C:\work\IfxNode\prebuilt\Win64
del C:\work\IfxNode\prebuilt\Win64\build.zip
copy C:\work\IfxNode\build.zip C:\work\IfxNode\prebuilt\Win64\build.zip
### Update the Hash value in the readme
# Get the hash key of the build zip
certutil -hashfile C:\work\IfxNode\prebuilt\Win64\build.zip MD5
update "prebuilt\README.md" with the hash value.