升级iobroker.js-controller报错npm ERR! code EEXIST

估计是重装iobroker后,把之前备份的iobroker整个文件夹覆盖到新系统,导致无法升级js-controller和其他io插件。

 

常规方式执行以下命令升级无果

sudo apt update && sudo apt upgrade

sudo killall -u iobroker

iobroker stop
 
iobroker update

sudo iobroker upgrade self

提示类似以下错误:

Update js-controller from @3.1.4 to @3.1.5
npm ERR! code EEXIST
npm ERR! path /opt/iobroker/node_modules/iobroker.ham/node_modules/.bin/miio
npm ERR! Refusing to delete /opt/iobroker/node_modules/iobroker.ham/node_modules/.bin/miio: is outside /opt/iobroker/node_modules/iobroker.ham/node_modules/miio and not a link
npm ERR! File exists: /opt/iobroker/node_modules/iobroker.ham/node_modules/.bin/miio
npm ERR! Remove the existing file and try again, or run npm
npm ERR! with --force to overwrite files recklessly.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/iobroker/.npm/_logs/2020-06-08T07_14_22_300Z-debug.log

尝试手动删除文件夹下存在的.bin/miio等文件,依然无果。

手动重装iobroker.js-controller3.1.5版,依然提示以上错误,无果。

npm install iobroker.js-controller@3.1.5 --loglevel error --unsafe-perm --prefix --force

sudo npm install -g npm

按照官方教程进行整个iobroker修复:

curl -sL https://iobroker.net/fix.sh | bash -

成功后继续按照官方输入命令:

cd /opt/iobroker
iobroker stop js-controller
npm install iobroker.js-controller

提示新的错误:

npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated mkdirp@0.3.5: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.1.2 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"arm"})
npm WARN tsutils@3.17.1 requires a peer of typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta but none is installed. You must install peer dependencies yourself.

npm ERR! code EEXIST
npm ERR! path /opt/iobroker/node_modules/iobroker.ham/node_modules/.bin/mkdirp
npm ERR! Refusing to delete /opt/iobroker/node_modules/iobroker.ham/node_modules/.bin/mkdirp: is outside /opt/iobroker/node_modules/iobroker.ham/node_modules/mkdirp and not a link
npm ERR! File exists: /opt/iobroker/node_modules/iobroker.ham/node_modules/.bin/mkdirp
npm ERR! Remove the existing file and try again, or run npm
npm ERR! with --force to overwrite files recklessly.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/iobroker/.npm/_logs/2020-06-14T01_48_01_794Z-debug.log

然后尝试增加--force:

npm install iobroker.js-controller --force

提示升级成功!:

npm WARN using --force I sure hope you know what you are doing.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated mkdirp@0.3.5: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)

> iobroker.js-controller@3.1.5 preinstall /opt/iobroker/node_modules/iobroker.js-controller
> node lib/preinstallCheck.js

NPM version: 6.14.5

> osx-temperature-sensor@1.0.7 install /opt/iobroker/node_modules/osx-temperature-sensor
> node-gyp rebuild

make: 进入目录“/opt/iobroker/node_modules/osx-temperature-sensor/build”
  SOLINK_MODULE(target) Release/obj.target/none.node
  COPY Release/none.node
make: 离开目录“/opt/iobroker/node_modules/osx-temperature-sensor/build”

> fsevents@1.2.12 install /opt/iobroker/node_modules/zigbee-herdsman/node_modules/fsevents
> node-gyp rebuild

make: 进入目录“/opt/iobroker/node_modules/zigbee-herdsman/node_modules/fsevents/build”
  SOLINK_MODULE(target) Release/obj.target/.node
  COPY Release/.node
make: 离开目录“/opt/iobroker/node_modules/zigbee-herdsman/node_modules/fsevents/build”

> iobroker.js-controller@3.1.5 install /opt/iobroker/node_modules/iobroker.js-controller
> node iobroker.js setup first

Existing earlier generated certificate is invalid (too old, validity longer then 345 days or keylength too short). Generating new Certificate!
object system.certificates updated
npm WARN tsutils@3.17.1 requires a peer of typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta but none is installed. You must install peer dependencies yourself.

+ iobroker.js-controller@3.1.5
added 72 packages from 32 contributors, removed 102 packages, updated 14 packages and moved 10 packages in 63.392s

60 packages are looking for funding
  run `npm fund` for details

然后运行iobroker

iobroker start

在web里看到主机升级3.1.5成功了:

手动再升级其他插件,也没问题了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值