node環(huán)境安裝和node-oracledb環(huán)境部署相關(guān)問題

使用node-oracledb的伙伴可以參考本文進行環(huán)境安裝刁卜,前言建議伊约,如你項目是屬于node-oracledb進行類客戶端開發(fā)级乐,可直接放棄該方案罐孝,node-oracledb是本機C++編譯模塊,node-oracledb的運行環(huán)境是必須環(huán)境狞尔,就是說丛版,就算項目打包出來運行,node-oracledb這些環(huán)境依然是你目標機要求環(huán)境偏序,相關(guān)問題參考官方issue页畦,博主以失敗方案為你親身實驗了一波,你應(yīng)該將node-oracledb作為服務(wù)驅(qū)動研儒,而不是客戶端級別的驅(qū)動使用豫缨。

Mac環(huán)境

要求環(huán)境:

  • node基本環(huán)境
  • Python 環(huán)境,通常MacOS10.12版本以上自帶python環(huán)境
  • 成功安裝instantclient-basic-macos.x64-12.1.0.2.0.zip 及instantclient-sdk-macos.x64-12.1.0.2.0.zip

Mac環(huán)境node安裝

搭建node環(huán)境端朵,建議通過node版本管理工具好芭,當然也可以去官網(wǎng)下載安裝包安裝,這里介紹mac系統(tǒng)node版本管理工具nvm

curl工具現(xiàn)在成為了mac內(nèi)置命令逸月,通常mac電腦自帶curl工具栓撞,如未安裝curl請自行下載安裝,

  • 下載與執(zhí)行遠程安裝nvm腳本
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
  • 添加系統(tǒng)變量碗硬,mac電腦可用~/.bashrc, ~/.bash_profile, 或者 ~/.zshrc來管理系統(tǒng)變量瓤湘,在你電腦中用戶根文件夾執(zhí)行
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安裝

進入官網(wǎng)下載Mac版instantclient-basic-macos.x64-12.1.0.2.0.zip和 instantclient-sdk-macos.x64-12.1.0.2.0.zip

將兩個文件夾解壓到系統(tǒng)根目錄下某一新文件夾木人,通常為/opt/oracle,如無路徑可自行新建冀偶,這里將使用路徑/usr/local/oracle, 打開路徑后醒第,把上述文件拷貝到該路徑下,執(zhí)行以下操作

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

添加系統(tǒng)變量:

同樣是之前的用戶根目錄下进鸠,vi打開文件.bash_profile文件稠曼,添加變量

export OCI_LIB_DIR=/usr/local/oracle/instantclient
export OCI_INC_DIR=/usr/local/oracle/instantclient/sdk/include

npm install

到此oracledb必要環(huán)境即安裝基本完成,可進入項目執(zhí)行

npm install oracledb

如oracledb安裝成功客年,即可進行node_modules全量安裝,否則解決oracledb安裝問題霞幅。

npm install 

Windows環(huán)境

要求環(huán)境:

  • node基本環(huán)境
  • Visual Studio 2005 redistributable 對應(yīng)Oracle client 11.2 或 Visual Studio 2010 redistributable及以上版本對應(yīng)Oracle client 12.1
  • Python 2.7 環(huán)境
  • 成功安裝instantclient-basic-windows.x64-12.2.0.1.0.zip 及 instantclient-sdk-windows.x64-12.2.0.1.0.zip

node安裝

搭建node環(huán)境漠吻,建議通過node版本管理工具,當然也可以去官網(wǎng)下載安裝包安裝司恳,可選管理工具:nvm-windowsnodist
這里介紹使用nvm-windows安裝node途乃,安裝成功nvm-windows后重啟電腦,打開cmd命令界面執(zhí)行:

nvm -v

查看nvm是否安裝成功扔傅,未成功耍共,請重新安裝,接下來執(zhí)行

nvm arch 64 //如電腦是32位系統(tǒng)應(yīng)設(shè)置為32
nvm list available //查看遠程可安裝node 版本

選擇版本安裝node v8.3.0

nvm install 8.3.0
node -v // 查看node是否安裝成功
nvm list // 查看當前已安裝node 版本及進行相應(yīng)管理

Visual studio安裝

Visual Studio 2013 (VC++ 12.0)及以上版本安裝铅鲤,各機型有可能會遇到問題划提,建議進行全量安裝Visual C++ Build Tools枫弟,直接避免后期問題邢享,或者強迫癥也可以堅持部分安裝,只進行安裝Visual Studio 2013 redistributable淡诗。官網(wǎng)Visual C++ 支持包下載列表

進入Visual C++ 2015 Build Tools官網(wǎng)下載Visual C++ 2015 Build Tools進行全量安裝
安裝過程中可能需要.Net Framework 版本環(huán)境要求請按要求自行安裝

python安裝

1 官網(wǎng)下載安裝包下載骇塘,默認安裝在C:\Python27
2 環(huán)境變量添加:
點擊我的電腦—屬性—高級系統(tǒng)設(shè)置—環(huán)境變量—系統(tǒng)變量Path——編輯,添加 C:\Python27 及 C:\Python27\Scripts韩容,變量之間以分號“;”間隔

 python // 檢測是否安裝成功

oracle即時客戶端及SDK安裝

1 進入官網(wǎng)下載 instantclient-basic-windows.x64-12.2.0.1.0.zip和 instantclient-sdk-windows.x64-12.2.0.1.0.zip

2 C盤建立oracle文件夾款违,將下載的兩個安裝包全部解壓至該文件夾下面,
3 添加系統(tǒng)環(huán)境變量

  • 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 如電腦還有設(shè)置防火墻插爹,請查看官網(wǎng)文檔.

npm install

到此oracledb必要環(huán)境即安裝基本完成,可進入項目執(zhí)行

npm install oracledb

如oracledb安裝成功请梢,即可進行node_modules全量安裝,否則解決oracledb安裝問題赠尾。

npm install 

關(guān)于另一種方式安裝win下環(huán)境:

網(wǎng)上相關(guān)資料有 windows-build-tools包同樣能全自動解決所有部署環(huán)境,但是在操作過程中毅弧,同樣試了一下气嫁,但是沒有成功,但是有部分人成功了够坐,本文同樣列舉相關(guān)操作進行自動環(huán)境部署作為方案之一:
首先確認你的npm版本應(yīng)該大于5版本以上寸宵,以管理員身份進行操作,導航至你項目下元咙,同樣注意電腦.Net Framework版本環(huán)境4.5.1及以上:

// navigate to your app folder
npm install --global npm // 如npm版本過低梯影,才需執(zhí)行
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

相關(guān)設(shè)定命令補充:

npm config set python python2.7
npm config set msvs_version 2015 // 你應(yīng)該檢查當前安裝的visual studio C++是2015才能設(shè)定為2015,否則為你本機安裝版本庶香。

windows-build-tools庫入口

npm install和運行可能遇到問題及其解決方式:

oracledb安裝問題

通常情況下甲棍,安裝問題更容易在windows系統(tǒng)下遇到,Mac環(huán)境下脉课,npm安裝失敗救军,一般都是oracle即時客戶端及SDK安裝時路徑不對或者系統(tǒng)變量未正確設(shè)置财异,這里主要介紹我在window環(huán)境下安裝遇到的各種問題,僅供參考

  • 問題一:
    C:\Program Files (x86)\MSBuild...\msbuild.exe未找到唱遭,或無默認定義MSBuild之類問題戳寸,或者是 node-gyp rebuild errors等等類似錯誤,即屬于visual studio C++ build tools必要工具安裝未成功拷泽,或node-gyp相關(guān)工具未能安裝正確
    解決辦法: 確認項目node_modules中node-gyp成功安裝(一般不會這里出錯疫鹊,必要時,可全局安裝執(zhí)行npm install -g node-gyp)司致, 正常情況下拆吆,應(yīng)該是你的Visual studio c++ 相關(guān)環(huán)境未能正確安裝,建議按之前步驟全部重新安裝visual studio C++ build tools脂矫。

  • 問題二:
    未能找到oci.h,或類似xxx.h 文件枣耀,造成npm install oracledb 錯誤。
    解決辦法: 電腦環(huán)境關(guān)于instantclient-basic-windows.x64-12.2.0.1.0.zip和 instantclient-sdk-windows.x64-12.2.0.1.0.zip兩解壓包環(huán)境操作不當庭再,或環(huán)境配置錯誤捞奕,建議重新按照上述步驟重新部署當前兩種環(huán)境。

oracledb構(gòu)建問題

oracledb屬于C++原生模塊拄轻,如你項目屬于electron相關(guān)項目颅围,項目啟動時構(gòu)建模塊時可能遇到類似問題如下:

構(gòu)建使用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 文件定義錯誤相關(guān)

此類問題都是屬于electron未能成功構(gòu)建本地原生模塊構(gòu)成,可查看官方說明

方法一:

// 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
    

方法二(不建議使用):

// 全局設(shè)置
# Electron 的版本。
export npm_config_target=1.2.3
# Electron 的系統(tǒng)架構(gòu), 值為 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 構(gòu)建。
export npm_config_runtime=electron
# 告訴 node-pre-gyp 從源代碼構(gòu)建模塊夺姑。
export npm_config_build_from_source=true
# 下載所有依賴墩邀,并緩存到 ~/.electron-gyp。
HOME=~/.electron-gyp npm install

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盏浙,一起剝皮案震驚了整個濱河市眉睹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌废膘,老刑警劉巖竹海,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丐黄,居然都是意外死亡斋配,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來艰争,“玉大人坏瞄,你說我怎么就攤上這事∷ψ浚” “怎么了鸠匀?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長逾柿。 經(jīng)常有香客問我缀棍,道長,這世上最難降的妖魔是什么机错? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任爬范,我火速辦了婚禮,結(jié)果婚禮上弱匪,老公的妹妹穿的比我還像新娘青瀑。我一直安慰自己,他們只是感情好痢法,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布狱窘。 她就那樣靜靜地躺著杜顺,像睡著了一般财搁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上躬络,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天尖奔,我揣著相機與錄音,去河邊找鬼穷当。 笑死提茁,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的馁菜。 我是一名探鬼主播茴扁,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼汪疮!你這毒婦竟也來了峭火?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤智嚷,失蹤者是張志新(化名)和其女友劉穎卖丸,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盏道,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡稍浆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衅枫。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡嫁艇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出弦撩,到底是詐尸還是另有隱情裳仆,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布孤钦,位于F島的核電站歧斟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏偏形。R本人自食惡果不足惜静袖,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望俊扭。 院中可真熱鬧队橙,春花似錦、人聲如沸萨惑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庸蔼。三九已至解总,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姐仅,已是汗流浹背花枫。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掏膏,地道東北人劳翰。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像馒疹,于是被迫代替她去往敵國和親佳簸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容