STF之问题篇
https://yq.aliyun.com/articles/221602

装完成后输入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.
Refs: [1fda657cac], #8391
Previously:

Module version mismatch. Expected 51, got 48.
Now:

The 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 now 51.
Refs: [96933df2ff], #8808
问题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. (/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 http://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至更高版本 http://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安装命令

最新文章

  1. Connect() 2016 大会的主题 ---微软大法好
  2. AJAX的核心XMLHttpRequest对象
  3. CLR执行模型
  4. Open Auth辅助库(使用ImitateLogin实现登录)
  5. 如何在Global.asax中判断是否是ajax请求
  6. C语言 给字符数组赋值的方法
  7. 【PyQt5】学习笔记(1)
  8. EXTJS 4.2 资料 控件之Grid 添加行,编辑行,删除行
  9. ios开发 UITableViewController
  10. Ffplay视频播放流程
  11. 网站压力测试ab 命令
  12. Linux之环境搭建(一)
  13. If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
  14. (stripTrailingZeros)A == B hdu2054
  15. JS 正则截取字符串
  16. JavaScript: The Good Parts
  17. Python bytes decode() 方法
  18. 树莓派3Braspberry pi 如何汉化显示中文教程
  19. android listview实现点击某个item后使其显示在屏幕顶端
  20. 高大上网站-CSS3总结1-图片2D处理以及BUG修复

热门文章

  1. vue-resource+iview上传文件取消上传
  2. shell脚本中 [-eq] [-ne] [-gt] [-lt] [ge] [le]
  3. iOS Block界面反向传值小demo
  4. wsgiref手写一个web服务端
  5. poj 2186 Popular Cows :求能被有多少点是能被所有点到达的点 tarjan O(E)
  6. LintCode 7.Serialize and Deserialize Binary Tree(含测试代码)
  7. Linux分享笔记:shell终端的介绍
  8. ELK初学搭建
  9. 【路由和交换之H3C自导自演】
  10. 9-C++远征之多态篇-学习笔记