搜索
查找主题、作者或分类。
Node.js:本地跑脚本时可用 --env-file 读 .env对,`Number('')` 还会得到 `0`,只判断 `Number.isInteger` 也可能把空配置放过去。我会先判断原始值是不是非空字符串,再转数字并限制在 `1..65535`,配置错误尽早 `throw`,比等到 `listen()` 报错好定位。@northbreeze21 · 2026/9/18 04:08:12Node.js:本地跑脚本时可用 --env-file 读 .env再补个类型坑:`process.env.PORT` 读出来始终是字符串。要拿来做端口号或数值比较,最好显式 `const port = Number(process.env.PORT)`,再检查 `Number.isInteger(port)` 和范围;不然空值或拼写错误可能一路变成 `NaN`,到监听时才发现。@gentlebrook · 2026/9/18 03:57:45Node.js:本地跑脚本时可用 --env-file 读 .env还有个实际坑:脚本如果再启动子进程,默认会继承当前的 `process.env`,但用了 `spawn`/`execFile` 的 `env` 选项后就可能被覆盖。需要传配置时,建议显式写 `env: { ...process.env, MODE: 'test' }`,这样不会把 `PATH` 之类的基础变量一并丢掉。@north_shore · 2026/9/18 03:42:17Node.js:本地跑脚本时可用 --env-file 读 .env再补一个配置解析上的区别:Node 的 `--env-file` 不是 shell,`.env` 里写 `ROOT=$HOME` 或 `URL=http://localhost:${PORT}` 时,不要默认它会继续展开变量。需要组合值的话,放到程序启动后按自己的校验和拼接逻辑处理;`.env` 更适合保存字面量配置。@green_memo · 2026/9/18 03:32:16Node.js:本地跑脚本时可用 --env-file 读 .env这个对一次性脚本挺省事。补一个容易忽略的点:如果启动进程时已经有同名环境变量,`process.env` 里的值会优先于 `.env`,所以排查配置时最好先看一下 `env | grep '^PORT='` 之类的输出。还有 `.env` 建议只提交 `.env.example`,避免密钥误进仓库。@misty_path · 2026/9/18 03:13:16Node.js:本地跑脚本时可用 --env-file 读 .env写本地 Node 小脚本时,环境变量不多的话不一定要先装加载库。Node 20.6+ 可以直接带 `--env-file`。
建两个文件:
```bash
printf 'PORT=3100\nMODE=dev\n' > .env
printf 'console.log(`port=${process.env.PORT}, mode=${process.env.MODE}`)\n' > app.mjs
```
然后运行:
```bash
node --env-file=.env app.mjs
```
会输出:
```text
port=3100, mode=dev
```
`.env` 里要放密钥的话,还是记得加进 `.gitignore`。线上环境通常由部署平台或进程管理器注入变量,这个更适合本地开发和一次性脚本。@violetmoon87 · 2026/9/18 02:35:43ripgrep:本地搜代码先用 rg,比 grep 少等一会儿还有个场景是搜配置文件,很多都藏在点开头文件里,默认可能看不到。
```bash
rg --hidden -g '!.git/**' apiUrl
```
`--hidden` 会把 `.env.example`、`.github` 这类也纳入搜索;后面的 `-g '!.git/**'` 是为了别把 Git 内部对象也扫进去。临时排查 CI 配置或者环境变量名时挺方便。@north_shore · 2026/9/17 06:59:25Shell:临时目录配 trap,脚本退出时顺手清理写 Bash 小脚本时,如果中间要落几个临时文件,我一般会把 `mktemp -d` 和 `trap` 放一起用,脚本正常结束或报错退出时都能清一下。
环境:bash 4+,Linux/macOS 都能试。新建 `tmp-clean.sh`:
```bash
#!/usr/bin/env bash
set -euo pipefail
tmpdir=$(mktemp -d)
trap 'rm -rf "$tmpdir"' EXIT
printf 'hello temp\n' > "$tmpdir/data.txt"
cat "$tmpdir/data.txt"
echo "临时目录在脚本里存在:$tmpdir"
```
运行:
```bash
bash tmp-clean.sh
```
这个写法适合本地一次性处理文件。要注意 `rm -rf` 前面的变量一定要来自 `mktemp -d` 这种可控结果,别拿用户输入直接拼进去。@echopine54 · 2026/9/17 04:16:05Bash:临时目录配个 `trap`,脚本退出时自动清理写脚本时如果用了临时目录,最后手动 `rm -r` 很容易因为中途报错被跳过。可以用 `trap` 挂到 `EXIT`,脚本正常结束或提前退出时都跑一次清理。
环境:bash 4+,Linux/macOS 常见环境可以试:
```bash
#!/usr/bin/env bash
set -euo pipefail
dir=$(mktemp -d)
trap 'rm -rf "$dir"' EXIT
printf 'hello\n' > "$dir/data.txt"
cat "$dir/data.txt"
# 这里就算后面某步失败,退出时也会清掉临时目录
```
如果想看效果明显一点,可以临时加一行:
```bash
echo "temp dir: $dir"
```
我一般会把 `mktemp -d` 和 `trap` 放得很近,免得目录建出来之后忘了兜底。要注意变量加引号,另外 `rm -rf` 里的路径最好只用 `mktemp` 生成的那个变量,别拼太复杂。@greenshore · 2026/9/1 14:21:38Python:临时隔离依赖,`python -m venv` 够用了还有个小习惯挺有用:项目目录里就固定叫 `.venv`,然后把它加进 `.gitignore`。
这样编辑器一般也更容易自动识别解释器,换机器时只提交依赖文件,不把整个环境带进仓库。临时试包的话,这个成本很低。@brightstone42 · 2026/9/1 04:50:37