node环境安装和node-oracledb环境部署相关问题
使用node-oracledb的伙伴可以参考本文进行环境安装,前言建议,如你项目是属于node-oracledb进行类客户端开发,可直接放弃该方案,node-oracledb是本机C++编译模块,node-oracledb的运行环境是必须环境,就是说,就算项目打包出来运行,node-oracledb这些环境依然是你目标机要求环境,相关问题参考官方issue,博主以失败方案为你亲身实验了一波,你应该将node-oracledb作为服务驱动,而不是客户端级别的驱动使用。
Mac环境
要求环境:
- node基本环境
- Python 环境,通常MacOS10.12版本以上自带python环境
- 成功安装instantclient-basic-macos.x64-12.1.0.2.0.zip 及instantclient-sdk-macos.x64-12.1.0.2.0.zip
Mac环境node安装
搭建node环境,建议通过node版本管理工具,当然也可以去官网下载安装包安装,这里介绍mac系统node版本管理工具nvm
curl工具现在成为了mac内置命令,通常mac电脑自带curl工具,如未安装curl请自行下载安装,
- 下载与执行远程安装nvm脚本
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
- 添加系统变量,mac电脑可用
~/.bashrc
,~/.bash_profile
, 或者~/.zshrc
来管理系统变量,在你电脑中用户根文件夹执行
ls -a
查看是否已有上诉文件,如无,新建.bash_profile
文件,或者另外两种之一亦可,并用vi编辑文件,黏贴以下变量:
touch .bash_profile //新建.bash_profile文件
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
source .bash_profile // 重新加载
重启命令行工具
nvm -v // 查看nvm工具是否安装成功
nvm ls-remote // 查看远程可选node安装版本
nvm install 8.3.0 // 安装node 版本8.3.0
nvm ls // 查看本机已安装node版本并进行管理
oracle即时客户端及SDK安装
进入官网下载Mac版instantclient-basic-macos.x64-12.1.0.2.0.zip和 instantclient-sdk-macos.x64-12.1.0.2.0.zip
将两个文件夹解压到系统根目录下某一新文件夹,通常为/opt/oracle,如无路径可自行新建,这里将使用路径/usr/local/oracle, 打开路径后,把上述文件拷贝到该路径下,执行以下操作
cd /usr/local/oracle
unzip instantclient-basic-macos.x64-12.2.0.2.0.zip
unzip instantclient-sdk-macos.x64-12.2.0.2.0.zip
mv instantclient_12_2 instantclient
cd instantclient
ln -s libclntsh.dylib.12.1 libclntsh.dylib
添加系统变量:
同样是之前的用户根目录下,vi打开文件.bash_profile
文件,添加变量
export OCI_LIB_DIR=/usr/local/oracle/instantclient
export OCI_INC_DIR=/usr/local/oracle/instantclient/sdk/include
npm install
到此oracledb必要环境即安装基本完成,可进入项目执行
npm install oracledb
如oracledb安装成功,即可进行node_modules全量安装,否则解决oracledb安装问题。
npm install
Windows环境
要求环境:
- node基本环境
- Visual Studio 2005 redistributable 对应Oracle client 11.2 或 Visual Studio 2010 redistributable及以上版本对应Oracle client 12.1
- Python 2.7 环境
- 成功安装instantclient-basic-windows.x64-12.2.0.1.0.zip 及 instantclient-sdk-windows.x64-12.2.0.1.0.zip
node安装
搭建node环境,建议通过node版本管理工具,当然也可以去官网下载安装包安装,可选管理工具:nvm-windows或 nodist
这里介绍使用nvm-windows安装node,安装成功nvm-windows后重启电脑,打开cmd命令界面执行:
nvm -v
查看nvm是否安装成功,未成功,请重新安装,接下来执行
nvm arch 64 //如电脑是32位系统应设置为32
nvm list available //查看远程可安装node 版本
选择版本安装node v8.3.0
nvm install 8.3.0
node -v // 查看node是否安装成功
nvm list // 查看当前已安装node 版本及进行相应管理
Visual studio安装
Visual Studio 2013 (VC++ 12.0)及以上版本安装,各机型有可能会遇到问题,建议进行全量安装Visual C++ Build Tools,直接避免后期问题,或者强迫症也可以坚持部分安装,只进行安装Visual Studio 2013 redistributable。官网Visual C++ 支持包下载列表
进入Visual C++ 2015 Build Tools官网下载Visual C++ 2015 Build Tools进行全量安装
安装过程中可能需要.Net Framework 版本环境要求请按要求自行安装
python安装
1 官网下载安装包下载,默认安装在C:\Python27
2 环境变量添加:
点击我的电脑—属性—高级系统设置—环境变量—系统变量Path——编辑,添加 C:\Python27 及 C:\Python27\Scripts,变量之间以分号“;”间隔
python // 检测是否安装成功
oracle即时客户端及SDK安装
1 进入官网下载 instantclient-basic-windows.x64-12.2.0.1.0.zip和 instantclient-sdk-windows.x64-12.2.0.1.0.zip
2 C盘建立oracle文件夹,将下载的两个安装包全部解压至该文件夹下面,
3 添加系统环境变量
- Path下添加:C:\oracle\instantclient_12_2;
- 新建变量 OCI_INC_DIR=C:\oracle\instantclient_12_2\sdk\include\
- 新建变量 OCI_LIB_DIR=C:\oracle\instantclient_12_2\sdk\lib\msvc\
4 如电脑还有设置防火墙,请查看官网文档.
npm install
到此oracledb必要环境即安装基本完成,可进入项目执行
npm install oracledb
如oracledb安装成功,即可进行node_modules全量安装,否则解决oracledb安装问题。
npm install
关于另一种方式安装win下环境:
网上相关资料有 windows-build-tools包同样能全自动解决所有部署环境,但是在操作过程中,同样试了一下,但是没有成功,但是有部分人成功了,本文同样列举相关操作进行自动环境部署作为方案之一:
首先确认你的npm版本应该大于5版本以上,以管理员身份进行操作,导航至你项目下,同样注意电脑.Net Framework版本环境4.5.1及以上:
// navigate to your app folder
npm install --global npm // 如npm版本过低,才需执行
npm install --global --production windows-build-tools
npm install instantclient
set PATH=%cd%\instantclient;%USERPROFILE%\.windows-build-tools\python27;%PATH%
set OCI_LIB_DIR=%cd%\instantclient\sdk\lib\msvc
set OCI_INC_DIR=%cd%\instantclient\sdk\include
npm install oracledb
相关设定命令补充:
npm config set python python2.7
npm config set msvs_version 2015 // 你应该检查当前安装的visual studio C++是2015才能设定为2015,否则为你本机安装版本。
npm install和运行可能遇到问题及其解决方式:
oracledb安装问题
通常情况下,安装问题更容易在windows系统下遇到,Mac环境下,npm安装失败,一般都是oracle即时客户端及SDK安装时路径不对或者系统变量未正确设置,这里主要介绍我在window环境下安装遇到的各种问题,仅供参考
-
问题一:
C:\Program Files (x86)\MSBuild...\msbuild.exe未找到,或无默认定义MSBuild之类问题,或者是 node-gyp rebuild errors等等类似错误,即属于visual studio C++ build tools必要工具安装未成功,或node-gyp相关工具未能安装正确
解决办法: 确认项目node_modules中node-gyp成功安装(一般不会这里出错,必要时,可全局安装执行npm install -g node-gyp
), 正常情况下,应该是你的Visual studio c++ 相关环境未能正确安装,建议按之前步骤全部重新安装visual studio C++ build tools。 -
问题二:
未能找到oci.h,或类似xxx.h 文件,造成npm install oracledb 错误。
解决办法: 电脑环境关于instantclient-basic-windows.x64-12.2.0.1.0.zip和 instantclient-sdk-windows.x64-12.2.0.1.0.zip两解压包环境操作不当,或环境配置错误,建议重新按照上述步骤重新部署当前两种环境。
oracledb构建问题
oracledb属于C++原生模块,如你项目属于electron相关项目,项目启动时构建模块时可能遇到类似问题如下:
构建使用node版本不对
The module '...'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 51. This version of Node.js requires
NODE_MODULE_VERSION 53. Please try re-compiling or re-installing
或者是未能找到oci.h,或类似xxx.h 文件定义错误相关
此类问题都是属于electron未能成功构建本地原生模块构成,可查看官方说明
方法一:
// 1. Install electron-rebuild
npm install --save-dev electron-rebuild
// 2. Rebuild
# 每次运行"npm install"出错时,运行这条命令
./node_modules/.bin/electron-rebuild
# 在windows下如果上述命令遇到了问题,尝试这个:
.\node_modules\.bin\electron-rebuild.cmd
方法二(不建议使用):
// 全局设置
# Electron 的版本。
export npm_config_target=1.2.3
# Electron 的系统架构, 值为 ia32 或者 x64。
export npm_config_arch=x64
export npm_config_target_arch=x64
# 下载 Electron 的 headers。
export npm_config_disturl=https://atom.io/download/electron
# 告诉 node-pre-gyp 是为 Electron 构建。
export npm_config_runtime=electron
# 告诉 node-pre-gyp 从源代码构建模块。
export npm_config_build_from_source=true
# 下载所有依赖,并缓存到 ~/.electron-gyp。
HOME=~/.electron-gyp npm install