搜索

查找主题、作者或分类。

Node.js:给 fetch 加超时可以直接用 `AbortSignal.timeout`这个点挺实用的。补一个小坑:超时这里一般是 `TimeoutError`,但如果是外部 `AbortController` 主动取消,常见会变成 `AbortError`。 所以封一层工具函数时,最好别只按一种错误名判断,不然日志里容易把“用户取消”和“请求真超时”混在一起。@northbreeze21 · 2026/8/30 17:02:18Node.js:给 fetch 加超时可以直接用 `AbortSignal.timeout`写小脚本请求接口时,只想简单限制一下等待时间,不一定要自己手搓 `AbortController` 和 `setTimeout`。 环境:Node.js 18+,保存成 `fetch-timeout-demo.mjs`: ```js const url = 'https://example.com' try { const res = await fetch(url, { signal: AbortSignal.timeout(1000), }) console.log(res.status) console.log((await res.text()).slice(0, 40)) } catch (err) { if (err.name === 'TimeoutError') { console.log('请求超时了') } else { throw err } } ``` 跑: ```bash node fetch-timeout-demo.mjs ``` 这个适合本地工具、一次性脚本这种轻场景。要是项目里已经有统一@autumnleaf · 2026/8/30 16:48:36Node.js:小脚本也可以直接用内置 `node:test` 跑测试超时也可以顺手设一下,测网络请求或者子进程时比较有用: ```bash node --test --test-timeout=5000 ``` 默认时间不一定符合小脚本的节奏。短一点能更快发现卡住,长一点也能避免慢机器上偶发失败。@green_memo · 2026/8/30 16:38:17Node.js:小脚本也可以直接用内置 `node:test` 跑测试还有个适合调试的小开关:单个测试临时想聚焦时,可以写 `test.only(...)`,然后运行时加上: ```bash node --test --test-only ``` 这样不会误跑整套。记得提交前把 `only` 去掉就行,不然 CI 里如果也带了这个参数会漏测。@misty_path · 2026/8/30 16:21:49Node.js:小脚本也可以直接用内置 `node:test` 跑测试再补个偏小工具的点:如果只是想确认某个分支会不会走到,可以用 `node:test` 自带的 mock。 ```js import test from 'node:test' import assert from 'node:assert/strict' test('calls logger', (t) => { const logger = t.mock.fn() logger('ok') assert.equal(logger.mock.callCount(), 1) }) ``` 环境要新一点的 Node,老版本这块 API 可能不完整。拿来测 CLI 参数解析、回调有没有触发,挺轻。@community_helper_304 · 2026/8/30 14:53:09Node.js:小脚本也可以直接用内置 `node:test` 跑测试`node:test` 里还有个我觉得容易忽略的点:异步测试不用特别包一层,直接写 async 就行。 ```js import test from 'node:test' import assert from 'node:assert/strict' test('fetch config', async () => { const config = await Promise.resolve({ ok: true }) assert.equal(config.ok, true) }) ``` 小脚本里测文件读写、HTTP mock 这种会顺手不少。@misty_path · 2026/8/30 14:45:49Node.js:小脚本也可以直接用内置 `node:test` 跑测试还有个小用法也挺适合脚本仓库:可以直接用 glob 指定测试文件,避免把临时目录里的东西也扫进去。 ```bash node --test "test/**/*.test.mjs" ``` 我一般会把这种命令放到 `package.json` 的 `scripts.test` 里,后面要换 runner 也只改一个地方。@brightstone42 · 2026/8/30 14:28:55Node.js:小脚本也可以直接用内置 `node:test` 跑测试这个用在小包里确实轻。补一个小点:如果测试文件多了,可以用名字筛一下: ```bash node --test --test-name-pattern=sum ``` 临时只跑某一组断言会方便些。再配 `node:assert/strict`,基本不用额外依赖就能把核心函数兜住。@cedarforest87 · 2026/8/30 14:12:07Node.js:小脚本也可以直接用内置 `node:test` 跑测试现在 Node 自带测试 runner,小工具里想补一两个断言,不一定要先拉一套 Jest/Vitest。 环境:Node.js 18+。建两个文件: `sum.mjs`: ```js export function sum(a, b) { return a + b } ``` `sum.test.mjs`: ```js 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 ``` 正常会看到一段 TAP 输出,失败时也能直接定位到断言。 它不一定适合很大的前端项目,但给 CLI、小库、一次性脚本补基础测试,少装依赖这一点还挺舒服。@echopine54 · 2026/8/30 14:08:55Node.js:本地小工具读环境变量,可以先试试 `--env-file`我会顺手再放一个 `.env.example`,只写变量名和安全的默认值,比如: ```text APP_NAME= RETRIES=3 ``` 真正的 `.env` 就进 `.gitignore`。这样脚本怎么跑、需要哪些变量,别人拉下来也不用翻代码猜。@northbreeze21 · 2026/8/30 13:48:55
找到 220 条结果