npmjs包管理工具和nodejs版本管理

nodejs介绍

  • 免费开源跨平台
  • 服务器上的 Javascript 运行环境
  • 基于 Chrome V8 引擎,事件驱动非阻塞式I/O

安装

  • win
    • 安装nvm-windows
1
2
3
4
5
6
nvm --sersion # 查看版本
nvm list # 查看安装的所有 node
nvm ls-remote # 查看服务器端所有可用 node 版本,如果版本不支持查看,请点击上面的链接查看所有版本
nvm install v15.1.0 # 安装 node
nvm --help # 指令帮助
nvm use v10.15.1 # 切换 node
  • centos

    • 安装brew
    • brew install n
  • mac安装

    • 安装brew
    • brew install n

npm全局依赖位置修改:

  • npm config get prefix查看全局依赖包路径
  • npm config set prefix "D:\nodejs\npm_global"设置全局依赖包路径
  • npm config get cache查看缓存路径
  • npm config set cache "D:\nodejs\npm_cache"设置缓存路径

win11改完不生效?

  • 打开设置,搜索环境变量,点击编辑环境变量
  • 找到用户变量的pathC:\Users\<ussername>\AppData\Roaming\npm,修改为

包管理工具-npm

  • npm i -g nrm
  • nrm ls
  • nrm use taobao

包管理工具-yarn

linux 后台运行 node 方法

pm2 后台运行 node

  • 安装npm install -g pm2

  • 自启动pm2 startup centos

  • 运行命令示例(*文件后缀要加上 .js*)

    • pm2 start add.js
    • pm2 start server/add.js
    • pm2 start -- run server相当于npm run server
  • 其它命令

    • pm2 list #查看进程
    • pm2 stop/reload/restart/delete all #停止/重载/重启/删除 所有进程
    • pm2 stop/reload/restart/delete 0 #停止/重载/重启/删除 pm2进程列表中进程为0的进程
    • pm2 logs [--raw] #显示所有进程的日志
    • pm2 flush #清空所有日志文件
    • pm2 reloadLogs #重载所有日志

node import 模块

  • node原生支持import

    • 文件后缀改为.mjs并且node:8版本一会才支持

    • import时写上完整文件名称,如:import '../utils.ejs'

    • node版本14执行命令:node bin/index.mjs

    • node版本低于14执行命令:node --experimental-modules bin/index.mjs,并且会出来警告说是测试功能

  • 获取当前执行文件路径及名称

    • __dirname文件路径
    • __filename文件路径+文件名

报错整理

  • 执行命令出错:node --inspect-brk ./node_modules/.bin/webpack webpack.config.js --inline --progress

  • 原因:win不支持 shell 脚本

  • 解决方法1:写完整路径 npx node --inspect-brk ./node_modules/webpack/bin/webpack.js --inline --progress

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    VM51 loader.js:931 Uncaught E:\tmp\node_modules\.bin\webpack:2
    basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
    SyntaxError: missing ) after argument list
    at wrapSafe (internal/modules/cjs/loader.js:931:16)
    at Module._compile (internal/modules/cjs/loader.js:979:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10)
    at Module.load (internal/modules/cjs/loader.js:879:32)
    at Function.Module._load (internal/modules/cjs/loader.js:724:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
    at internal/main/run_main_module.js:17:47
  • 文件没有执行权限

  • 加权限:chmod +x test.shell

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Error: spawn /Users/baran.lee/Desktop/cxvh-cli-test/test/bin/process/test.shell EACCES
    at Process.ChildProcess._handle.onexit (internal/child_process.js:269:19)
    at onErrorNT (internal/child_process.js:465:16)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
    errno: -13,
    code: 'EACCES',
    syscall: 'spawn /Users/baran.lee/Desktop/cxvh-cli-test/test/bin/process/test.shell',
    path: '/Users/baran.lee/Desktop/cxvh-cli-test/test/bin/process/test.shell',
    spawnargs: [ '-al', '-bl' ],
    cmd: '/Users/baran.lee/Desktop/cxvh-cli-test/test/bin/process/test.shell -al -bl'
    }
1
2
3
4
5
6
7
8
9
10
11
FATAL ERROR: v8::Object::GetAlignedPointerFromInternalField() Unaligned pointer
1: 00007FF6908303DF napi_wrap+109311
2: 00007FF6907D5096 v8::internal::OrderedHashTable<v8::internal::OrderedHashSet,1>::NumberOfElementsOffset+33302
3: 00007FF6907D5E66 node::OnFatalError+294
4: 00007FF69107A048 v8::V8::AnnotateStrongRetainer+88
5: 00007FF6910A705A v8::Object::SlowGetAlignedPointerFromInternalField+122
6: 00007FF69084C42B v8::internal::compiler::Operator::EffectOutputCount+1003
7: 00007FF69084B58D napi_wrap+220333
8: 00007FF690F83BEA v8::internal::Isolate::RunPromiseHook+58
9: 00007FF690D87F26 v8::internal::RegExpMatchInfo::ReserveCaptures+278
10: 00007FF690B3A768 v8::WasmStreaming::OnBytesReceived+1144