閱讀222 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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 可以根據下圖中紅框一列來確定自己所需要的版本。

191355_ZjCX_1032182.png

解決方法:將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.

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`).

問題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上看到外國友人這麼說的:

204512_BSgx_1032182.png204048_hdl7_1032182.png

大概是說在安裝某個依賴應用中,我們升級或者安裝了其他版本的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

  上一篇:go  關於數據科學的那些事
  下一篇:go  學生專享:雲翼計劃(雲主機118元/年) –這是大學生成長計劃,為了更好的明天,讓自己脫穎而出!