VSCode依赖本地Node.js,需确保环境变量正确加载;密码哈希应使用crypto.scrypt或bcrypt而非crypto.createHash;调试时launch.json需正确配置runtimeExecutable和cwd,ES模块需动态导入crypto。

VSCode 本身不提供 Node 运行时,必须依赖本地已安装的 Node.js;只要 node 和 npm 在终端中可用,VSCode 就能调用——配置重点不在 VSCode 设置里,而在确保环境变量和脚本执行路径正确。
确认 Node.js 已正确安装并被 VSCode 终端识别
很多人卡在这一步:VSCode 内置终端打不出 node -v,但系统终端可以。这是因为 VSCode 启动时没加载 shell 的环境变量(尤其是 macOS 的 ~/.zshrc 或 Linux 的 ~/.bashrc)。
- 在 VSCode 中按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入并选择Developer: Toggle Developer Tools,切换到 Console 标签页,执行process.env.PATH,看是否包含 Node 安装路径(如/usr/local/bin或~/.nvm/versions/node/v20.15.0/bin) - 若缺失,重启 VSCode 前先在系统终端运行
code --new-window启动(它会继承当前 shell 环境) - macOS 用户若用 nvm,请确保
~/.zshrc中的 nvm 初始化代码在 VSCode 启动前已执行;可临时在 VSCode 终端运行source ~/.zshrc测试
用 crypto 模块做密码加密时别直接用 crypto.createHash 当密码哈希
crypto.createHash 是通用摘要函数(如 SHA-256),不适合直接存密码——它太快、无盐、易被彩虹表攻击。Node.js 官方推荐用 crypto.scrypt 或第三方 bcrypt。
- 内置方案:优先选
crypto.scrypt(Node ≥ 10.5.0),它带 salt 且可调成本参数,示例:const crypto = require('crypto');<br>crypto.scrypt('mypassword', 'salt123', 32, { N: 1024, r: 8, p: 1 }, (err, key) => {<br> if (err) throw err;<br> console.log(key.toString('hex'));<br>}); - 若用
bcrypt,需npm install bcrypt,注意 Windows 下可能因 node-gyp 编译失败,建议用npm install bcrypt --build-from-source或换用bcryptjs(纯 JS 实现,略慢但免编译) - 别在浏览器环境混用 Node 的
crypto模块——VSCode 调试的是 Node 进程,不是网页,这点常被误判
调试加密逻辑时,VSCode 的 launch.json 怎么写才不报错
直接按 F5 运行加密脚本却提示 Cannot find module 'crypto'?基本是 launch.json 配置了错误的运行时或工作区路径。
- 确保
launch.json中runtimeExecutable未被手动指定为某个旧版 Node 路径(比如指向已卸载的 Node 版本);删掉这一项,让 VSCode 自动用PATH中第一个node -
cwd必须设为项目根目录(含package.json),否则require('crypto')不会出问题,但require('./utils')类相对路径会失败 - 如果用了 ES Module(
type: "module"),记得把crypto改为动态导入:const { scrypt } = await import('crypto');,否则import语法在 CommonJS 环境下会报错
真正容易被忽略的是:加密结果是否可复现,取决于 salt 是否持久化存储——每次生成新 salt 是对的,但你得把它和哈希值一起存进数据库;只保存哈希值,验证时就无法还原 salt,整个流程就断了。


















