记录下近期遇到的问题及解决方法。
本机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.