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安装命令

npm 版本问题的更多相关文章

  1. yarn or npm 版本固化如何选择

    前言 作为前端开发者,npm这个包管理工具的重要性显而易见.优点不再表述,但一些缺点是为使用者诟病比较多的:速度慢.版本控制.下面主要讨论下npm的版本固化问题,即lock文件. npm语义化版本管理 ...

  2. node和npm版本引起的安装依赖和运行项目失败问题

    问题:node版本不同导致的安装依赖版本不同而无法启动 https://www.jianshu.com/p/c07293c8c6d4 实际上问题分为两个部分: 1,npm包管理器安装依赖不成功,此时需 ...

  3. npm学习(一)之安装、更新以及管理npm版本

    安装npm 安装前须知: npm是在Node中编写的,因此需要安装Node.js才能使用npm.可以通过Node.js网站安装npm,或者安装节点版本管理器NVM. 如果只是想开始探索npm,使用No ...

  4. 升级本地已安装的 Node 和 npm 版本

    Mac升级本地已经安装的NodeJs和Npm到最新版,可以使用一下方式进行升级和更新. 其实windos上升级nodejs也很简单,只需在nodejs官网下载安装最新的msi即可. 值得注意的是安装时 ...

  5. nodejs安装 Later version of Node.js is already installed. Setup will now exit 及 node与npm版本不符

    暴力删除nodejs导致无法重新安装  Later version of Node.js is already installed. Setup will now exit 1.电脑全局搜索nodej ...

  6. ubuntu 升级node和npm 版本

    使用vue-cli 3 构建项目时会一直卡在拉取依赖不动,原因是node和npm版本过低,升级node版本即可 $ sudo npm cache clean -f $ sudo npm install ...

  7. npm版本兼容导致的npm ERR! ERESOLVE unable to resolve dependency tree

    当团队项目中,团队成员的npm包管理工具版本不一致时执行npm install报错: npm -v查看版本信息:7.x与6.x之间的兼容问题 解决方案: 一:升级或降级npm版本,保持一致npm in ...

  8. npm版本安装问题

    问题一 描述 运行npm install之后,前端页面console控制台报错,invalid props. 排查 1. 排除了代码问题,完全一样的代码,其他人的运行无误. 2.猜想可能是版本号问题, ...

  9. mac更新node,npm版本

    最近开发发现node版本多低的提示,于是升级一下 # 清除node.js的cache: $ sudo npm cache clean -f # 安装 n 工具,专门用来管理node.js版本的工具 $ ...

随机推荐

  1. Feign Form表单POST提交

    Form表单的POST提交,调用该类接口最长用的方式就是HttpClient,如果使用Feign,如何实现呢? 首先,看下Http中已Form的形式做Post提交的定义: -------------- ...

  2. cuda 8.0, ssd

    error info and resolution: https://github.com/weiliu89/caffe/issues/38 https://github.com/weiliu89/c ...

  3. Python使用dict和set

    dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也成为map,使用键-值(key-value)存储,具有极快的查找速度. 假设要根据同学的名字查找对应的 ...

  4. Python 学习笔记(八)Python列表(一)

    列表基本操作 列表(list)定义  列表是Python中的一种对象类型,也是一种序列 对象类型:list 表示方法:[ ] python 列表中的元素可以是任何类型的对象 >>> ...

  5. [UNIX]UNIX常用命令总结

    (1)查看服务器IP信息 $netstat -in (2)查看挂载磁盘信息 #sam #需要在root账号下查看

  6. iOS-GCD使用详解

    前言 对初学者来说,GCD似乎是一道迈不过去的坎,很多人在同步.异步.串行.并行和死锁这几个名词的漩涡中渐渐放弃治疗.本文将使用图文表并茂的方式给大家形象地解释其中的原理和规律. 线程.任务和队列的概 ...

  7. 简明 ES6 模块

    简明 ES6 模块 1.什么是模块 模块就是一段代码,这段代码可以反复使用,经常单独写成一个文件,一旦加载会立即执行. 2.导出 导出有 2 种方式:命名导出和默认导出,分别用关键字export和ex ...

  8. 青蛙的约会(exgcd/扩展欧几里得)

    题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清 ...

  9. git中如何忽略文件上传?

    使用原因:至于我们为什么要使用git忽略文件,原因很多.就比如我自己的情况吧!自己一个人多地方开发,为了代码同步,这样很方便.但是有个问题就是,我创建 的是开源项目,上面有一些服务器上面的配置信息,这 ...

  10. jquery如何获取对应表单元素?

    问题描述:我页面中有这样多个表单,我都是这个定义的,当我点击确定按钮时,此时能够获得相对应的表单对象,我该怎么获取到他的两个值呢? 解决方案: 页面元素 <form id="form1 ...