JavaScript 定义 Object 内的常量

JavaScript 中,对于直接在当前作用域下定义常量,可以使用非 ECMAScript 5 标准的 const 关键字,而对于 Object 内定义常量,不能使用以下语句:

会提示语法错误 Uncaught SyntaxError: Unexpected token .

在 Node.js 中,可以使用 Object.defineProperty / Object.defineProperties 来实现 Object 内常量的定义,如下代码:

由于这两个方法属于 ECMAScript 5 标准,在 IE 低版本下会出现不兼容情况,所以在浏览器环境还是慎用。

Node.js 把 user/group 名称转换成 uid/gid

http server 侦听到 sock 文件时,出于安全考虑把 sock 文件修改成指定的用户名和用户组,fs 模块的 chown 只能传入 uid/gid 参数,因此需要把 user/group 名称转换成 uid/gid,因此有了下面的这一个模块。

https://www.npmjs.com/package/userid

由于模块使用 c 扩展,相信性能会比纯 JavaScript 的模块好不少,有兴趣可以试试下面这个使用 JavaScript 回调命令行的同类模块,下载量也很高。

https://www.npmjs.com/package/uid-number

Express 4 下使用 body-parser 报警告的解决方法

今天升级 Express 到 4.x,发现直接使用 body-parser 会提示 deprecated 警告

app.use(bodyParser());

提示如下:

body-parser deprecated bodyParser: use individual json/urlencoded middlewares app.js:14:9
body-parser deprecated undefined extended: provide extended option node_modules/body-parser/index.js:85:29

该警告在 Express 3.x 下不会发生,查找后发现在 stackoverflow 已有朋友发出解决方法拉:

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));