Nodejs知识点总结
1.读写文件
同步读写:readFileSync()、writeFileSync();
异步读写:readFile()、writeFile();
1 | // 将文件读取为buffer |
1.node基础:文件系统-文件读取:https://www.cnblogs.com/chyingp/p/node-guide-file-read.html
2.fs 模块:http://javascript.ruanyifeng.com/nodejs/fs.html
2.获取文件路径
__filename: module.filename。
__dirname:该行代码所在的目录。
1 | var path = require('path'); |
1.node如何获取当前文件的上级目录路径?:https://segmentfault.com/q/1010000005964557
3.遍历目录
1 | // 同步遍历 |
1.遍历目录:https://wiki.jikexueyuan.com/project/nodejs-guide/traverse.html
2.使用node.js获取目录中的所有文件名:https://codeday.me/bug/20170226/2491.html
3.增大运行内存
运行nodejs项目时,出现:FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory 错误,可以再运行时。
主要是因为:,在 Node 中通过 JavaScript 使用内存时只能使用部分内存(64位系统下约为1.4 GB,32位系统下约为0.7 GB),这就是我们编译项目时为什么会出现内存泄露了。可以使用参数增加相应的内存。
(1)执行时直接指定
1 | node --max-old-space-size=1700 test.js // 单位为MB |
(2)mac配置环境变量
我在mac系统上,修改了 .bash_profile 和 .zshrc 文件,增加了 NODE_OPTIONS 选项,然后关闭了命令行,重写开启。
1 | export NODE_OPTIONS=--max-old-space-size=8192 |
(3)windows 设置环境变量
在 windows 命令行中这么设置,setx NODE_OPTIONS,好像不起作用,我又 $env:NODE_OPTIONS,重启了命令行,重启了VSCode,算是可以看了。
1 | setx NODE_OPTIONS --max-old-space-size=16384 |
(4)使用 cross-env 命令
在 package.json 中安装 cross-env,然后配置 fix-memory-limit 命令,直接执行 pnpm fix-memory-limit 就可以了。
1 | "scripts": { |
(5) 配置chrome 使用高性能模式
打开win11设置,然后选择系统-》屏幕——》显示卡,浏览应用,然后选择Chrome,然后右键选项,选择高性能模式。
1.基于node的前端项目编译时内存溢出问题
2.heap out of memory
3. Setting the NODE_OPTIONS environment variable on Windows 这是在windows上进行设置的方法。
4.升级过程中的问题
(1) Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead
在使用Buffer()构造时候,会出现上面这个问题,根据参考资料进行适当的调整。
1 | new Buffer(body); |
(2) digital envelope routines::unsupported
在使用nodejs v17.0.0 中创建vue 3.0的项目,然后npm run serve 启动的时候,出现了这个问题。
这个问题我没有解决,感觉是一个bug,我还是换回LTS版本好了。可以设置环境变量。
1 | export NODE_OPTIONS=--openssl-legacy-provider; gatsby build |
1.nodejs 17: digital envelope routines::unsupported export NODE_OPTIONS=–openssl-legacy-provider
2.Solved: digital envelope routines::unsupported ReactJS和AngularJS中如何避免这个问题,还有作者提出建议,要使用LTS长期支持版本
3.Node 17.0.1 causes some error - digital envelope routines::unsupported “build”: “export NODE_OPTIONS=–openssl-legacy-provider; gatsby build”