安装node最佳实践

1. 安装nvm

方法1(有梯子推荐):

winget install "NVM for Windows"

方法2:

nvm中文网下载安装文件

2. 安装指定版本node

查询支持版本
nvm list available
启用nvm
nvm on
安装指定版本
nvm install 12.1.0
切换版本
nvm use 16.16.0

3. 注意事项

如果之前已经安装好node了,那么需要把环境变量Path指向npm和nodejs的删掉,保留下面两项
NVM_HOME
NVM_SYMLINK

记一次sass-loader深坑

众所周知sass-loader需要依赖node-sass,但是往往版本对不上号,排查过程如下

1. 检查node版本

node -v
node-sass的页面有对应的版本

NodeJS Supported node-sass version Node Module
Node 17 7.0+ 102
Node 16 6.0+ 93
Node 15 5.0+, <7.0 88
Node 14 4.14+ 83
Node 13 4.13+, <5.0 79
Node 12 4.12+ 72
Node 11 4.10+, <5.0 67
Node 10 4.9+, <6.0 64
Node 8 4.5.3+, <5.0 57
Node <8 <5.0 <57

2. 安装对应版本的node-sass或者node

安装node-sass

npm i -D node-sass@对应版本

或者切换node版本

nvm use 12.1.0使用nvm切换对应node支持版本

3. 然后是sass-loader对应node-sass版本

sass-loader node-sass
sass-loader 4.1.1 node-sass 4.3.0
sass-loader 7.0.3 node-sass 4.7.2
sass-loader 7.3.1 node-sass 4.7.2
sass-loader 7.3.1 node-sass 4.14.1
sass-loader 10.0.1 node-sass 6.0.1

npm i -D sass-loader@对应版本

4. 接下来是最玄学的部分

如果你卡在中间位置,那怎么办。
假如node-sass版本4.12.1,那么sass-loader应该是7.3.1。
此时应该是能install成功的了,接下来就运行
如果运行报错,上下加减版本号,随机组合一下。

node.js 阻塞式、非阻塞式(同步、异步处理)

//input.txt内容

测试文字

阻塞式(同步)

var fs = require("fs");

var data = fs.readFileSync('input.txt');

console.log(data.toString());
console.log("程序执行结束!");

//输出
测试文字
程序执行结束!

非阻塞式()

var fs = require("fs");

fs.readFile('input.txt', function (err, data) {
   if (err){
      console.log(err.stack);
      return;
   }
   console.log(data.toString());
});
console.log("程序执行完毕");

//输出
程序执行完毕
测试文字

 

获取监听器事件数量

var events = require('events');
var eventEmitter = new events.EventEmitter();

// 监听器 #1
var listener1 = function listener1() {
   console.log('监听器 listener1 执行。');
}

// 监听器 #2
var listener2 = function listener2() {
  console.log('监听器 listener2 执行。');
}

// 绑定 connection 事件,处理函数为 listener1 
eventEmitter.addListener('connection', listener1);

// 绑定 connection 事件,处理函数为 listener2
eventEmitter.on('connection', listener2);

var eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " 个监听器监听连接事件。");

输出

2 个监听器监听连接事件。
监听器 listener1 执行。
监听器 listener2 执行。