STF之問題篇
安裝完成後輸入stf doctor查看工具依賴是否正確,安裝教程可以參考我之前寫的,這裏不再多說,直接說問題。
mac篇
問題1:Unexpected error checking ZeroMQ: Error: Module version mismatch. Expected 48, got 47.
問題分析:根據錯誤提示,初步定位node moudle的版本不一致,期望的是48,而我的node moudle 是47.於是進入node官網(https://nodejs.org/en/download/releases/)下載moudle 等於48的nodejs版本。
node moudle version 可以根據下圖中紅框一列來確定自己所需要的版本。
解決方法:將v5.x版本升級到v6.x後,再次運行stf doctor,該問題解決。又出現問題2。
ps:問題靈感源:https://github.com/nodejs/node/wiki/Breaking-changes-between-v6-and-v7
Native Modules (Addons)
- The Native Module version mismatch error has been updated to be far more clear.
- Refs: [
1fda657cac
], #8391
- Refs: [
Previously:
Module version mismatch. Expected 51, got 48.
Now:
The module '<module>'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 48. This version of Node.js requires
NODE_MODULE_VERSION 51. Please try re-compiling or Re-installing
the module (for instance, using `npm rebuild` or `npm install`).
- The
NODE_MODULE_VERSION
is now51
.- Refs: [
96933df2ff
], #8808
- Refs: [
問題2:Error: The module '/usr/local/lib/node_modules/stf/node_modules/_zmq@2.15.3@zmq/build/Release/zmq.node' was compiled against a different Node.js version using NODE_MODULE_VERSION 47. This version of Node.js requires NODE_MODULE_VERSION 57. Please try re-compiling or re-installing the module
問題分析:在GitHub上看到外國友人這麼說的:
大概是說在安裝某個依賴應用中,我們升級或者安裝了其他版本的node版本導致安裝應用時所使用node版本與我們變更後當前的node版本不一致。
解決方法:根據錯誤提示建議,及國外友人建議,執行npm install 或 npm rebuild去重新構建node,注意:執行npm install / npm rebuild命令必須進入stf根目錄執行
問題3:
scripts.prepublish: "bower install --allow-root && not-in-install && gulp build || in-install" (node:1305) fs: re-evaluating native module sources is not supported. If you are using the graceful-fs module, please update it to a more recent version. module.js:442 throw err; ^ Error: Cannot find module 'strip-json-comments' at Function.Module._resolveFilename (module.js:440:15) at Function.Module._load (module.js:388:25) at Module.require (module.js:468:17) at require (internal/module.js:20:19) at Object.<anonymous> (/root/stf-master/node_modules/.npminstall/eslint/2.13.0/eslint/lib/config/config-file.js:23:21) at Module._compile (module.js:541:32) at Object.Module._extensions..js (module.js:550:10) at Module.load (module.js:458:32) at tryModuleLoad (module.js:417:12) at Function.Module._load (module.js:409:3) Error: Run "sh -c bower install --allow-root && not-in-install && gulp build || in-install" error, exit code 1 Error: Run "sh -c bower install --allow-root && not-in-install && gulp build || in-install" error, exit code 1 at ChildProcess.proc.on.code (/usr/lib/node_modules/cnpm/node_modules/runscript/index.js:67:21) at emitTwo (events.js:106:13) at ChildProcess.emit (events.js:191:7) at maybeClose (internal/child_process.js:852:16) at Process.ChildProcess._handle.onexit (internal/child_process.js:215:5)
解決方法:參考 https://toutiao.io/posts/9kf4j3/preview 方可解決
問題4:插入手機後,STF顯示手機信息但一直處於disconnect狀態,刷新頁麵後,手機設備信息全部消失。查看stf控製台輸出,如下:
FTL/util:lifecycle 7678 [5e56e8f2] Shutting down due to fatal error
INF/provider 6994 [*] Cleaning up device worker "5e56e8f2"
ERR/provider 6994 [*] Device worker "5e56e8f2" died with code 1
npm ERR! jpeg-turbo@0.4.0 install: node-pre-gyp install --fallback-to-build
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the jpeg-turbo@0.4.0 install script 'node-pre-gyp install --fallback-to-build'.
解決方法:
1、install yams, run brew install yasm
2、At last run cnpm install -g stf
Linux篇
6.1.1、安裝好jdk, android sdk後,輸入adb,提示“
adb: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by adb)
adb: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by adb)”的錯誤信息
問題原因:libc庫的版本低的原因,CentOS 的libc版本v2.14 要CentOS 7 才有支持 GLiBC_2.14, centos 6.5的libc版本為2.12
解決方法:
第一、查看係統glibc版本庫
strings /lib64/libc.so.6 |grep GLIBC_
[root@gzhxy-NAQA build]# strings /lib64/libc.so.6 |grep GLIBC_
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_PRIVATE
第二、下載和安裝glibc2.14
wget https://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
tar -xzvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build
cd build
../configure --prefix=/opt/glibc-2.14
make && make install
第三、創建軟鏈接
[root@gzhxy-NAQA build]# cp -r /etc/ld.so.c* /opt/glibc-2.14/etc/
[root@gzhxy-NAQA build]# ln -sf /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6
6.1.2、安裝STF過程中出現:Node.js npm ERR! Failed at xxx install script 'node-gyp rebuild'
我在嚐試方案二中解決了此問題。
方案一:升級gcc至更高版本 https://mirrors.opencas.org/gnu/gcc/
方案二:這個問題是 nodejs 一些版本的 bug,npm編譯安裝模塊的時候沒把對應的 bind 文件拷貝過去。解決辦法是重新編譯一遍,類似於這樣:
$ sudo npm install -g node-gyp
$ cd node_modules/libxmljs
$ node-gyp rebuild
參考: https://github.com/libxmljs/libxmljs/issues/253
6.1.3、nodejs版本問題(建議已編譯版本安裝)
參考了很多STF安裝的文章,其中對於STF依賴nodejs版本的問題,用0.12.x、4.x、6.x、最新版本...各種都有,其中nodejs的安裝也有多種方式,通過踩坑無數,驗證了使用nodejs已編譯好的版本,隻需解壓,打軟連接就可以了。如果該版本不兼容也可以輕鬆刪除,不會導致勿刪其他軟件自身所依賴的node文件。
6.1.4、源碼方式安裝nodejs(超級不建議)
如果你使用了該方式,那就要保證一次性用對nodejs的版本,因為在make&make install時,執行了大量腳本,自己不是不清楚而是壓根就不知道和nodejs相關的文件都放在了哪裏。就算是參考網上的測底刪除nodejs文件的方法,也無法測底刪除幹淨,而且還有很大概率導致你的其他軟件不可用,比如Java,adb...等等
附刪除nodejs默認安裝文件(雖然沒有什麼用)
1》cd /usr/local/lib 刪除所有 node 和 node_modules文件夾
cd /usr/local/include 刪除所有 node 和 node_modules 文件夾
2》 cd /usr/local/bin
刪除 node 的可執行文件
3》刪除: /usr/local/bin/npm
刪除: /usr/local/share/man/man1/node.1
刪除: /usr/local/lib/dtrace/node.d
刪除: rm -rf /home/[homedir]/.npm
刪除: rm -rf /home/root/.npm
4》 find / -name node
find / -name node_modules
(特別要注意文件路徑,有些事其他包安裝的node文件,別刪錯了)(通常情況下都會勿刪的)
6.1.5、如果誤刪了node文件,在執行一些命令的時候會出現“node.js 運行 npm失敗:npm Segmentation fault (core dumped)”提示! 恭喜你來到這一步,我們先來說出現該問題的原因,然後在告訴你如何放大招來解決它。
出現該問題的原因是由於在安裝nodejs的時候使用了源碼安裝的方式,到後麵步驟時發現提示nodejs或npm版本低,或使用的nodejs版本有不兼容問題。無奈,你隻能通過卸載nodejs來重新嚐試安裝可能沒有問題的nodejs版本,但有可能你又安裝了一個有問題的nodejs,又卸載,又安裝....當你安裝第n個版本後輸入npm命令,出現了版本號,那在執行npm的其他命令依舊會報此錯誤提示。
或許是我太菜了,問題查了2天,無解。最終拿了一個全新的環境再次安裝,最終可以執行stf安裝命令
最後更新:2017-10-02 08:39:52