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-windowsnodist
这里介绍使用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,否则为你本机安装版本。

windows-build-tools库入口

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容