近期出错小记II

记录下近期遇到的问题及解决方法。

本机ulimit设置

问题描述

本地跑rspec,报错:

Too many open files @ rb_sysopen..........

终端查看ulimit:「ulimit 用于显示和设置resource limits」

ulimit -a

# 输出:
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-v: address space (kbytes)          unlimited
-l: locked-in-memory size (kbytes)  unlimited
-u: processes                       1418
-n: file descriptors                4864

解决方法

报错显示 too many open files, 所以扩大对文件的限制就好了。

ulimit -n 10240

ulimit -a

# 输出:
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-v: address space (kbytes)          unlimited
-l: locked-in-memory size (kbytes)  unlimited
-u: processes                       1418
-n: file descriptors                10240

OK.

webpacker升级的问题

问题描述:

同事升级了项目的webpacker,拉最新代码后,终端跑rails c, 报错:

error "@rails/webpacker#@babel/core" is wrong version: expected "^7.4.5", got "7.4.3"
error "@rails/webpacker#@babel/plugin-proposal-class-properties" is wrong version: expected "^7.4.4", got "7.4.0"
error "@rails/webpacker#@babel/plugin-proposal-object-rest-spread" is wrong version: expected "^7.4.4", got "7.4.3"
error "@rails/webpacker#@babel/plugin-transform-destructuring" is wrong version: expected "^7.4.4", got "7.4.3"
error "@rails/webpacker#@babel/plugin-transform-regenerator" is wrong version: expected "^7.4.5", got "7.4.3"
error "@rails/webpacker#@babel/plugin-transform-runtime" is wrong version: expected "^7.4.4", got "7.4.3"
error "@rails/webpacker#@babel/runtime" is wrong version: expected "^7.4.5", got "7.4.3"
error "@rails/webpacker#js-yaml" is wrong version: expected "^3.13.1", got "3.12.0"
error "eslint#js-yaml" is wrong version: expected "^3.13.0", got "3.12.0"
error "webpack-dev-server#chokidar" is wrong version: expected "^2.1.6", got "2.1.5"
error "webpack-dev-server#portfinder" is wrong version: expected "^1.0.21", got "1.0.20"
.....

解决方法

刚开始是自己手动改package.json, 后面发现不对劲,越改坑越深,直接重装node_modules.

rm -rf node_modules
yarn install

简单粗暴,但是有效!

网页自适应的另一种打开方式

问题描述:

网页在部分用户的电脑上无法正常显示,准确的说,显示的页面不完整,下面的页面直接被截断了。

解决方法:

涉及到网页自适应问题。

项目用的是nuxt 的框架,第一反应是设置meta.

在config中,设置了meta,生成的页面中,可以看到

<meta name="viewport" content="width=device-width, initial-scale=1">

不过上面的问题依然存在,毛线效果都没有。

最后,老大用了一个我个人觉得很巧妙的方式解决了,这里简单记录下。

解决思路是根据 screen 的 height 和width,设置对应的字体大小,使得整个屏幕可以完整显示。

具体是,在设置html的 CSS文件中,做类似如下的修改:

html {
  font-size: 16px;

  @media screen and (max-height: 700px) {
    font-size: 12px;
  }
}
..........

上诉代码意为:默认字体大小16px, 当浏览器窗口高度 <= 700px时,设置字体大小为12px。

如果项目中使用了 bootstrap,可以直接使用其自带的 media breakpoint, 比如:

html {
  font-size: 16px;

  @include media-breakpoint-down("lg") {
    font-size: 14px;
  }
  @include media-breakpoint-down("sm") {
    font-size: 12px;
  }
}
..........

这方式是不是挺巧的?😄

虚拟机访问Mac主机的本地站点

问题描述:

VM中安装了Windows10,需要在window中访问本机站点localhost:3000。「需求点在于本地这边修改了代码后,希望在虚拟机的windows10中,可以开 IE浏览器查看网页效果。」

解决方法:

Google后找到了解决方法,但是对其原理并不了解,这里仅附上解决方法。

ifconfig查看本机Mac 的IP,比如是192.168.11.142。

在window虚拟机中,开cmd, 输入:

ping 192.168.11.142

确保虚拟机可以访问主机。

「网上有很多提到修改VM网络连接配置的,但是我自己的VM默认的网络连接是NAT,所以对这块未进行任何改动。」

此时,打开IE,访问:http://192.168.11.142:3000/, 发现仍无法访问。

回到本机Mac,重启rails,绑定 0.0.0.0:

rails s -b 0.0.0.0

虚拟机中IE再次访问,OK。

嗯,enjoy yourself in the IE world.

参考

ulimit command

设备像素比简单介绍

CSS @media Rule

Bootstrap responsive-breakpoints

虚拟机如何访问Mac主机的本地站点?