杂七杂八问题以及解决方案记录

发布于 2022-06-09 15:33:34 字数 215 浏览 956 评论 5

工作,日常学习,阅读文章等过程中的问题记录,包括解决方案(如果有)或者相关探索。

相关:

  1. 框架和库的使用问题
  2. 浏览器相关问题(如调试)
  3. 系统相关问题(如兼容性问题)
  4. 各种工具(如 git)问题

注意:

由于水平有限,不保证 100% 正确,欢迎讨论,共同进步。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

城歌 2022-05-04 13:57:13

5. shebang line(#!) 与node.js工具

写脚本已经是node.js的一个主流功能,比如gulp-cli, webpack-cli等等。今天用一个小工具突然报了一个莫名其妙的错误,错误原因比较有意思,这里记录下。

#!/usr/bin/env node

var xxx...

一般情况下,脚本都是上面的格式,表示用node去执行下面的js代码。其中第一行叫shebang line,指明用来执行脚本的解释程序。

而使用的小工具报了这样的错误信息:

env: noder: No such file or directory

一番排查,问题出在shebang line:

fs.readFileSync('脚本所在路径').toString().slice(0, 30)

// --->

'#!/usr/bin/env nodenn'use stri'  // 正常的
'#!/usr/bin/env nodernrn'use st' // 报错的

是不是看出什么了?对的,问题就出在r上。

unix/linux 下,换行符是n,于是,有问题的shebang line被解析后,env是noder,而不是node。所以系统根本没法找到一个叫noder的程序来执行这段脚本...

最后问了工具的开发者,他在windows上开发,

一向肩并 2022-05-04 13:56:29

4. html中的是什么鬼??

工作中需要分割项目,从原来代码(windows系统中写的)中拷贝了页面到新仓库(Mac开发),浏览器中浏览页面,Elements面板发现head中的内容漏到body里了,然后body内第一个字符就是!!

资料:

zero width no-break space ,windows用来做 byte order marks。果然是windows的锅。

除资料里的方法外,可以这样去除65279:

const re = new RegExp(String.fromCharCode(65279), 'g')
str.replace(re, '')
余生一个溪 2022-05-04 13:55:07

3. windows上0.0.0.0:3000无法访问

nodejs server跑在0.0.0.0,让同事本机部署时,0.0.0.0:3000竟然无法访问,报错**ERR_ADDRESS_INVALID**。

解决:

原来windows上0.0.0.0被当作无效/未知的域名,服务器跑在0.0.0.0:3000后,其实可以

  • 本地用localhost:3000访问
  • 外部用ip:3000访问
看春风乍起 2022-05-03 01:59:28

2. path的API在windows平台的行为

unix/linux/osx下,path的API的执行结果都是简明一致的。由于windows的盘符概念,这些API返回的结果则需要特别注意了。

path.resolve('/dir/subdir/index.html')
// returns 'D:\dir\subdir\index.html'  返回了D盘(工作盘)作为根目录

path.join('/root', 'dir/index.html')
// returns '\root\dir\index.html'  `/`被替换为了`\`

请记住,windows下这些API的执行结果很多时候不符合预期

然后在操作路径前使用path.normalize可能是比较好的行为。

ˇ宁静的妩媚' 2022-05-01 05:51:41

1. Koa之context.is

app.use((ctx, next) => {
    if (ctx.is('html')) {
    // do something
    }
});

// assume browser opens `localhost:3000/`

context.is跟我们期待的行为很不一样。我们以为只要content-type符合,那么这个方法就要返回正确的typeNaive!!!

context.is的内部实现是jshttp/type-is这个库,查看源码可知:

function typeofrequest(req, types_) {
  var types = types_

  // no body
  if (!hasbody(req)) {
    return null
  }

在代码检查content-type前,已经因为request没有body被打断了。更明确一点,所有的GET请求context.is一律返回null

呵呵...

为什么这么处理?查到的一个比较官方的解释是 koajs/koa#440

并且官方推荐context.accepts这个API。

结论: 怎么说呢,限制必须有body好像也不是完全没道理,不过还是 呵呵 。

~没有更多了~

关于作者

薄情伤

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

文章 0 评论 0

云雾

文章 0 评论 0

夏尔

文章 0 评论 0

alipaysp_yxYxYl56FW

文章 0 评论 0

涙—继续流

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文