node/npm使用记录

日期:2015-8-10 21:40 | 标签: node | 阅读:921

Node是做后端的利器,简洁高效跨平台,这里记录使用过程中遇到的问题,Node很多功能都有对应的库,我们只需安装即可,这里也将记录一些用过的有趣的库以及其安装过程。

怎么学

node安装/升级

  1. 非win32,可直接使用以下命令,但是在我服务器上安装完成后不成,直接进入到安装目录手动运行就成
    npm install -g n
    # 直接升级到最新稳定版本
    n stable
    # 也可以使用 n + 版本号
    n v5.5.0
    # 手动运行
    cd path/to/n/bin
    ./n v5.2.0
    
  2. win32就得直接在官网下载,老老实实安装咯,不过你还是可以利用淘宝镜像加快下载速度的,如以下这个链接就可以直接下载
    • node-v7.8.0-x86.msi,升级后,可能还需要安装附属的一些东西,比如 python ,由于 node 自带构建工具只支持到 Python 2.x (参见:node-gyp),注意不要下载 3.x 版本,当然如果你已经下载 3.x 版本了,那么你也可以直接通过 m config set python /path/to/executable/python2.7设置当前使用版本。
      • python3 默认安装目录C:\Users\user\AppData\Local\Programs\Python\Python36-32
      • python2 默认安装目录C:\Python27\
  3. 使用包管理工具 nvm,参考:https://segmentfault.com/a/1190000007612011
  4. node升级,npm 也该对应的升级,对应单方面出现的问题,可以参考该贴:http://stackoverflow.com/questions/40308623/cannot-find-module-internal-fs-afer-upgrading-to-node-7
  5. 下载到一半就中断了 Segmentation fault,打算手动从 npm 下载并安装 参考这个: https://www.cnblogs.com/baby123/p/6955396.html

npm升级

其包在 win10 上的安装路径为

C:\Users\xxx\AppData\Roaming\npm\node_modules

npm install -g npm@latest
# 失败
cnpm install -g npm@latest
# 成功,当前版本更新至 4.3.0

Windows可复制AppData\Roaming\npm\node_modules\npm下的文件到你的NodeJS安装目录下的 \node_modules\npm 中,覆盖掉原来的全部文件。
其余方法

sudo npm install npm -g
sudo npm update npm -g

升级到 node 9.3

  1. 出现 gulp-sass 安装不成功,移除 node_modules ,改变 node-sass 下载路径到淘宝镜像,安装成功
  2. cnpm 出现了不能用的情况,直接报 pawn EPERM,卸载再安装也解决不了问题

用过的一些有趣的库

  1. node-canvas
    参考:https://cnodejs.org/topic/4f939c84407edba2143c12f7
  2. lodash
    从此不再为数组转换、匹配、查找而烦恼
    http://www.cnblogs.com/whitewolf/p/4417873.html
  3. archiver 压缩/解压缩,支持zip/tar
    https://github.com/archiverjs/node-archiver

关闭node进程

我使用node app.js开启网站后,不小心将putty终端关闭了,结果网站仍能访问,解决方案如下:

lsof -i :端口
kill -2  进程id

全局变量

日志

怎么处理纷杂的日志信息呢,请参考:https://github.com/winstonjs/winston

各种报错

  1. 这个可能是开了多个服务造成的,比如引入了socket.io:
    接待
    解决:一般是程序有问题,重复作出响应,试试找找是否有redirect和render重复使用的情况呢?
  2. 内存泄漏问题,网上各种解决方案对我都不适用
    接待
  3. 报413错误,原因是请求头太大了,设置方法(适用于node4):

    var bodyParser = require('body-parser');
    app.use(bodyParser.json({limit: '50mb'}));
    app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
    

    参考链接:
    http://stackoverflow.com/questions/19917401/node-js-express-request-entity-too-large/

  4. Error: ENOENT, no such file or dir
    此症状主要是因为文件或文件夹不存在的原因咯,但是有时候明明就存在为啥找不到呢?我遇到过一个问题,

    // 此目录的相对路径在bin
    node bin/www
    // 此目录的相对路径居然在www,很是恼火!
    forever start bin/www
    

安装forever/pm2

forever这个名字听上去就不错,使用极其简单:

$ npm install forever -g    #安装
$ forever start app.js        #启动
$ forever stop app.js        #关闭
$ forever start -l forever.log -o out.log -e err.log app.js   #输出日志和错误

这样你就可以让你的node网站持久运行了,初次安装时,在服务器上使用以下命令,执行完毕后,敲forever -help命令。居然提示不存在?

npm install -g forever  --registry=https://registry.npm.taobao.org

这哥们也遇到了相同的问题,用软链ln解决了问题,于是我也试了一试

  ln /usr/local/src/node-v4.2.4-linux-x64/bin/forever  /usr/local/bin/forever

命令行提示/usr/local/bin/forever已经存在,难道是文件的问题?删除后重试还是不行!
教程:http://tcrct.iteye.com/blog/2043644

pm2

没办法,听说pm2最强大,于是打算直接安装pm2

npm install -g pm2

出现了同样的问题,这个问题是规避不了了!一看应该是ln的路径不对,改改先:

ln  /usr/local/src/node-v4.2.4-linux-x64/lib/node_modules/pm2/bin/pm2  /usr/bin/

这回命令是识别到了,但是报错,看到还得有相关选项配置才行,参考centos用npm安装forever失败 把命令改为软链

ln -sf  /usr/local/src/node-v4.2.4-linux-x64/lib/node_modules/pm2/bin/pm2  /usr/bin/

成功!(应该看看linux相关的书籍才行了!)

删除文件

尽管有文件处理API,但是我还是用了以下这个

var exec = require('child_process').exec,child;
child = exec('rm -rf test',function(err,out) { 
  console.log(out); err && console.log(err); 
});

查看全局安装的包

npm list -g --depth 0

各种不知所措

卸载

暂未实践:http://www.cnblogs.com/kivenlv/p/6096171.html

参考

node自启动 http://www.ruanyifeng.com/blog/2016/02/linux-daemon.html
一个不错的node博客:http://lylijincheng.herokuapp.com/blog

版权声明: 署名-非商业性使用-禁止演绎 4.0 国际(CC BY-NC-ND 4.0
Copyright ©2013-2017 | 粤ICP备14081691号 | yipeng手工打造 | 联系方式