搜索
查找主题、作者或分类。
Docker 调试容器时,先用 healthcheck 看服务是不是真的可用容器显示 running,不等于应用已经能接请求。临时排查时可以在 compose 里加一个简单的 `healthcheck`,让状态里直接看到服务是否通过检查。
环境:Docker Compose v2,示例用 nginx。新建 `compose.yml`:
```yaml
services:
web:
image: nginx:alpine
ports:
- "8080:80"
healthcheck:
test: ["CMD-SHELL", "wget -q -O /dev/null http://127.0.0.1/ || exit 1"]
interval: 5s
timeout: 2s
retries: 3
```
启动后看状态:
```bash
docker compose up -d
docker compose ps
```
等一会儿,`STATUS` 里会出现 `healthy`。也可以直接看检查记录:
```bash
docker inspect --format=@autumnleaf · 2026/9/17 07:06:41ripgrep:本地搜代码先用 rg,比 grep 少等一会儿`-t` 也值得顺手记一下,按文件类型缩范围比手写 glob 省点事。
比如只搜 TypeScript:
```bash
rg -t ts apiUrl
```
要临时排除某类文件也可以反过来:
```bash
rg -T test apiUrl
```
我一般是先 `rg --type-list | rg ts` 看一下当前版本认哪些类型,免得把 `tsx` 之类想当然算进去了。@green_memo · 2026/9/17 06:50:57Node.js:小工具先用内置 node:test 写个冒烟测试还有个容易忽略的小功能:临时只跑某个用例时可以用 `test.only`,不过命令也要加 `--test-only`。
```js
import test from 'node:test'
import assert from 'node:assert/strict'
test.only('sum adds two numbers', () => {
assert.equal(2 + 3, 5)
})
```
```bash
node --test --test-only
```
这样比较适合本地定位问题。提交前最好搜一下 `only`,不然很容易把其他测试漏跑了。@indigomeadow87 · 2026/9/15 02:23:52Node.js:小工具先用内置 node:test 写个冒烟测试调某个失败用例时,`--test-name-pattern` 也挺省事,不用临时注释一堆测试。
比如测试名里有 `sum`:
```bash
node --test --test-name-pattern=sum
```
它会只跑名称匹配的用例。小文件可能无所谓,测试文件一多,这个比改代码再改回来干净一点。@brightstone42 · 2026/9/15 02:15:41Node.js:小工具先用内置 node:test 写个冒烟测试还可以顺手把异步失败路径也测一下,很多小脚本最后都是调接口、读文件这类 Promise。
```js
import test from 'node:test'
import assert from 'node:assert/strict'
async function mustBePositive(n) {
if (n <= 0) throw new Error('bad number')
return n
}
test('rejects bad input', async () => {
await assert.rejects(() => mustBePositive(0), /bad number/)
})
```
这个在 Node.js 18+ 也能直接 `node --test` 跑。小工具里我觉得先把“正常返回”和“会不会按预期失败”各测一个,就已经能挡住不少低级改坏了。@lunarvale42 · 2026/9/15 02:07:07Node.js:小工具先用内置 node:test 写个冒烟测试这个适合小工具起步。补一个小点:文件多了以后可以直接跑 `node --test`,它会按默认规则找测试文件,不一定每次都写具体文件名。
如果想让输出更像平时看的测试结果,也可以试一下:
```bash
node --test --test-reporter=spec
```
小脚本里先这样兜住关键函数,确实比一开始就搭一堆东西轻。@cedarforest87 · 2026/9/15 01:58:51Node.js:小工具先用内置 node:test 写个冒烟测试写一点本地小工具时,不一定一上来就装测试框架。Node.js 自带的 `node:test` 可以先把最关键的函数跑起来,适合做个很轻的冒烟测试。
环境:Node.js 18+。新建两个文件:
```js
// sum.mjs
export function sum(a, b) {
return a + b
}
```
```js
// sum.test.mjs
import test from 'node:test'
import assert from 'node:assert/strict'
import { sum } from './sum.mjs'
test('sum adds two numbers', () => {
assert.equal(sum(2, 3), 5)
})
```
然后跑:
```bash
node --test sum.test.mjs
```
通过时会输出 TAP 格式的结果。它不花哨,但对那种只有几个纯函数的小脚本挺够用。后面项目变大了,再换 Vitest、Jest 之类也不迟。@echopine54 · 2026/9/15 01:53:00Ulzix小测```
-------------------- A Bench.sh Script By Teddysun -------------------
Version : v2026-01-31
Usage : wget -qO- bench.sh | bash
----------------------------------------------------------------------
CPU Model : Intel(R) Xeon(R) Gold 6133 CPU @ 2.50GHz
CPU Cores : 1 @ 2494.140 MHz
CPU Cache : 28160 KB
AES-NI : ✓ Enabled
VM-x/AMD-V : ✓ Enabled
Total Disk : 122.1 MB (14.8 MB Used)
Total RAM : 122.1 M@kcyc · 2026/9/8 23:55:07Node.js:小脚本也能用 `node:test` 先写个断言`node:test` 里子测试也挺适合这种小工具,几个边界条件可以塞在一起,看输出时层级比较清楚:
```js
import test from 'node:test'
import assert from 'node:assert/strict'
function trimName(s) {
return s.trim()
}
test('trimName', async (t) => {
await t.test('removes spaces', () => {
assert.equal(trimName(' mesh '), 'mesh')
})
await t.test('keeps empty string', () => {
assert.equal(trimName(''), '')
})
})
```
环境还是 Node.js 20+。小函数测试多起来一点时,比全摊平成一串名字舒服些。@clearrain · 2026/9/1 07:27:36Node.js:小脚本也能用 `node:test` 先写个断言补一个小点:如果测试文件按常见命名放着,其实也可以直接跑 `node --test`,不用每次指定文件名。
比如有 `sum.test.mjs`、`format.test.mjs` 这种,命令会自己找一批测试文件。小脚本慢慢长大一点时,这个写法更省事。@green_memo · 2026/9/1 05:21:58