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.

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上看到外国友人这么说的:

大概是说在安装某个依赖应用中,我们升级或者安装了其他版本的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 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安装命令

时间: 2025-01-27 09:21:15

STF之问题篇的相关文章

WebApp最佳实践用户体验篇之如何针对多种屏幕尺寸设计合理的移动应用

身为一个移动web网站的设计师,除非你只是针对某种特定的设备设计,否则你应该会常常碰到这样的问题:如何清楚地了解网站运行设备的屏幕尺寸大小?这个问题一直困扰着移动设备上的设计师. 例如: iPhone的高度是480个像素,宽320像素. 许多Nokia N系列设备的宽度为240像素,高度为320像素. 许多更新款的设备支持宽度和高度颠倒的视图. 旧款的Nokia(目前仍然比较流行)设备屏幕的尺寸从176×208到352×416不等. Blackberry屏幕的分辨率也是从160×160到324×

掌上快递之开机启动篇

启动篇 主要分为开机和功能导航俩部分来总结 先上部分截图图直观感受下 1.开机部分 开机图片比较简单,有个开机图片,图片放在了R.layout.start布局文件中,刚开始老是出现适配问题,后来索性放到LinearLayout的background属性中,然后使用Hnadler创建了一个子线程延时子线程加载后续的跳转Activity(第一次开机跳转功能导航,非第一次跳转主界面)开机的布局文件 R.layout.start(适配比较好) [html] view plain copy <span s

安装 OpenLiteSpeed 1.4 + PHP 7.0 设置篇

此篇接上篇 <安装篇>,这里介绍如何在 OpenLiteSpeed 中以 LSAPI 跑 PHP的设置篇.因为两篇文章合起来比较长,所以这里分开写. O喷 LiteSpeed 的设置有点像 IIS 的设置,还是蛮有意思的. 因为根据 LiteSpeed 的官方数据显示,LSAPI 跑 PHP 是 LS 下最高效的,所以这里就不介绍 Fast-CGI 的方式了. 一.访问面板,设置中文 1.登入 WebAdmin ,默认在 7080 端口,例如米饭粑就可以通过 https://www.mf8.b

给大家推荐几篇技术文章

给大家推荐几篇文章,希望大家能够喜欢! HTML5/CSS3实现虚拟键盘功能 详解HTML5获取电池状态信息的方法 详解基于共享存储(SAN)的MySQL高可用方案 盘点近年来struts2产生的安全漏洞 System.arraycopy用法详解 Java线程java.lang.Thread.State状态详解 RAW Socket 获取流经本地网卡的所有数据包 LSP网络劫持介绍 统计textarea输入个数并限制输入长度特效提示 从马云的角度看个人站长的未来在哪里 Google Guava库

MySQL 第五篇:系统函数和联合查询

我把MySQL的内容整理成9篇博客,学完这9篇博客虽不能说能成为大神,但是应付一般中小企业的开发已经足够了,有疑问或建议的欢迎留言讨论. 一.系统函数 一.概念 函数是SQL里的关键字,用于对字段里的数据进行操作.函数是一个命令,通常与字段名称或者是表达式联合使用,处理输入的数据并产生结果 二.控制函数 1.case 语法:case 值 when 比较的值 then 返回的值 when 比较的值 THEN-. END SELECT s_name, CASE sex WHEN 0 THEN '女性

揭开知识库问答KB-QA的面纱2·语义解析篇

作者丨刘大一恒 学校丨四川大学博士生 本期我们从传统方法之一的语义解析(有时也被称为语义分析)开始,以一个经典的语义解析 baseline 方法为例,介绍语义解析如何进行 KB-QA.该方法来自斯坦福 Berant J, Chou A, Frostig R, et al. 的Semantic Parsing on Freebase from Question-Answer Pairs,文章发表于 2013 年的 EMNLP 会议. 1. 什么是语义解析 在揭开知识库问答KB-QA的面纱1·简介篇

[Qt教程] 第19篇 2D绘图(九)图形视图框架(上)

[Qt教程] 第19篇 2D绘图(九)图形视图框架(上) 楼主  发表于 2013-5-4 15:26:20 | 查看: 1798| 回复: 26 图形视图框架(上) 版权声明 导语 在前面讲的基本绘图中,我们可以自己绘制各种图形,并且控制它们.但是,如果需要同时绘制很多个相同或不同的图形,并且要控制它们的移动,检测它们的碰撞和叠加:或者我们想让自己绘制的图形可以拖动位置,进行缩放和旋转等操作.实现这些功能,要是还使用以前的方法,那么会十分困难.解决这些问题,可以使用Qt提供的图形视图框架.  

[Qt教程] 第20篇 2D绘图(十)图形视图框架(下)

[Qt教程] 第20篇 2D绘图(十)图形视图框架(下) 楼主  发表于 2013-5-4 15:43:02 | 查看: 861| 回复: 0 图形视图框架(下) 版权声明 该文章原创于Qter开源社区(www.qter.org),作者yafeilinux,转载请注明出处! 导语 环境:Windows Xp + Qt 4.8.4+QtCreator 2.6.2 目录 三.场景(QGraphicsScene) (一)场景层 (二)索引算法 (三)边界矩形 (四)图形项查找 (五)事件处理和传播 (

JAVA规则——开发篇

本文介绍的JAVA规则的说明分为3个主要级别,本篇抛弃了平时开发中很少遇到的情况,那些用得比较少的以后再高级篇里面出现.并有六个有用的国际软件开发重要注意的有关String的问题,遵守了这些规则可以提高程序的效率.使代码又更好的可读性等.(1) 如果有JDBC连接没有关掉的话,需要在"finally"方法中关掉如果数据库连接失败或者是没有释放连接,看上去无关紧要.但是其他的用户就需要用更长的时间等待连接,这样数据库利用效率就会下降.确保你的代码在任何情况下,包括出错或者程序异常终止的情