慣性聚合 高效追讀感興趣之博客、新聞、科技資訊
閱原文 以慣性聚合開啟

推薦訂閱源

博客园 - 司徒正美
V
V2EX
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
aimingoo的专栏
aimingoo的专栏
Apple Machine Learning Research
Apple Machine Learning Research
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
A
About on SuperTechFans
月光博客
月光博客
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
V
Visual Studio Blog
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python)
观红JavaScript之艺,不惊不乱
Kathirvel S · 2026-05-24 · via DEV Community

欢迎至《周日源流》第四集.

今日之恶徒何在?

JavaScript控制台之谬误.

那令人胆寒之赤色文字,开发者佯装立时洞悉.

诚然,控制台谬误乃开发者终将与之交契之物。非因吾辈欲之,乃JavaScript所迫也.

初时,控制台之误,令人望而生畏。
汝见巨幅赤色之讯。
随机之行号。
奇名如:

Uncaught TypeError

入全景模式 出全屏模式


Unexpected token

入全景模式 出全屏模式

俄而觉浏览器似言他语。

然经屡废其事,屡试不效,及夜半穷理,始悟至理:

实乃控制台欲助尔也。

非攻尔也。

惟陈其谬耳。

既习读此讯,则排错之惧渐消,若解小谜矣.

此篇大抵化惊红为可解之理.

盖凡工皆至 console 不复可怖之境…

…而始见其用。


初次毁我自信于机

尚忆书简事微:

console.log(userName)

入全屏模式 出全屏模式

更新之,冀其有奇术.

而浏览器应之如斯:

Uncaught ReferenceError: userName is not defined

入全屏模式 出全屏模式

彼时,吾心二念。

  1. “何谓未捕获?”
  2. “何故 JavaScript 怒于我?”

而最可笑者何?

吾诚以为吾之瀏覽器已損壞矣。

吾屡次刷新之,以为或可消吾之谬误。

揭秘:

未然。

若尝启DevTools而睹赤色之墙,贺君——尔已正为码者.

控制台非尔之敌.

实乃JavaScript竭力告尔曰:

“噫……物有毁坏。此其处也。请先之,俟用户睹此。”

既习读控制台之误,则排错之事,远少可怖矣。

弊在多数开发者初遇之失,多凭情动而非理析。

睹赤文立生忖度:

“万事皆倾颓矣。”

然多失实微末耳。

一误字耳。
一括号之遗。
一名之谬。
一载之失。

微瑕致巨变。

何者诚能状JavaScript之妙。


何谓JavaScript控制台乎?

此机若似通灵之径介于汝之码与浏览器之间。

汝之浏览器日志:

  • 谬误
  • 警诫
  • 网络请求失败
  • 自定义消息
  • 调试信息

可如此开启之:

Chrome / Edge

F12

全屏模式开启 全屏模式退出


Ctrl + Shift + I

全屏模式开启 全屏模式退出

则往控制台之标签

今可实时观汝之谬误

趣哉

然控制台之能,远超众开发者之识

非惟显谬之场

亦为试炼之境

可直于控制台运JavaScript

例:

2 + 2

入全景模式 出全屏模式

浏览器立时应之:

4

入全景模式 出全屏模式

汝可察变量,试函数,操弄DOM,且排逻辑之谬,而毋须频改文书。

是故,资深开发者多耗时于DevTools之中。

瀏覽器控制台成為君之勞作之部分。

終將,君止懼之。

君實開始賴之。

此聽似怪異,直至君之應用於生產中崩壞,而控制台成為君唯一之線索。

官方定義

JavaScript控制台乃网页浏览器所供之开发者工具,用以显JavaScript代码于网页运行时所生之讯息、警示、错误及调试之信息也。


何谓控制台之错?

此乃凶险之所在也。

时尔之网站顾盼甚好…

…然JavaScript默然于背景中败绩矣。

例:

  • 按纽之击不复效
  • API之数据永未载入
  • 表单拒纳
  • 动画凝滞
  • 诸构件尽隳

而昭其真者何在?

惟控制台耳。

彼微页,开发者漠视,直至生产之际方觉其患。

网页之弊,莫大者,莫过于此:

“若界面载,则万事毕。”

此言谬矣。

今之网页,甚赖JavaScript。

一脚本之失,可破认证、支付、搜索之能,亦可扰用户之互动,而页面犹显正常。

此乃调试之难处也。

时也,败绩昭然。

或用户先觉,而后开发者始知。

此乃苦痛之虫也。

尤以事端惟现于特定浏览器、设备或网境之时为甚。

控制台之助,可揭隐患于用户始发如“尔之网不工”之讯之前。

“嘿……尔之网不工。”

此实乃每程匠之最恶之报。


五种最常见之JavaScript控制台错误

吾辈当遍历诸开发者所遇之谬误.

此乃“初涉JavaScript”之谬误.

而趣事在于…

汝辈永难全避之.

纵使经验丰富者,犹恒误触此谬.

所异者,今已少惊慌.

大抵然。


引用錯誤

盡其常也

茲示其例

console.log(username)

全屏模式入 全屏模式出

然其實變數者

let userName = "John"

全屏模式入 全屏模式出

控制台言

ReferenceError: username is not defined

全屏模式入 退出全屏模式

此意何在

JavaScript 寻觅 username.

乃搜之.

乃受之苦.

竟无所获.

浏览器基本检视内存,而言曰:

“吾实不知此变量为何物。”

官方定义

乃 JavaScript 试图访问未尝宣示或于当前域中不可得之变量标识时所生之谬误。ReferenceError


其故何在?

大抵有此数端:

  • 名号之讹误
  • 变量之名失当
  • 未宣而先用
  • 域之乖剌

此误于大应用中甚为常见,盖因变量流移于众文件、众函数、众组件之间也。

一毫命名之失,即可倾覆全局。

且因JavaScript重大小写:

userName

入全屏模式 出全屏模式


username

入全屏模式 退出全屏模式

何其迥异.


此中有时似失礼.

调整之法

  • 检视:
  • 大写字母
  • 拼写
  • 变量存否

其宣告之位

userName !== username

盖因:__JHSNS_SEG_72f79449_176__进入全屏模式 退出全屏模式

JavaScript 擅察大小写.

诚然,其确乎在意.

一善习乃用编辑器自动补全,毋须屡次手动键入变量名.

此可大减愚谬之失.

且信我言…

多 debugging 之会,始于一愚谬之失.


2. 语法之误

此者,谓汝之代码结构有失。

举例如是:

if (true {
  console.log("Hello")
}

满屏模式入 满屏模式出

缺漏 )

控制台:

SyntaxError: Unexpected token '{'

满屏模式入 满屏模式出

官方定义

SyntaxErrorJavaScript逢违其语法规式之码,则阻其解析与执行。


何故如此

盖常因此也。

  • 括号缺失
  • 遗落逗号
  • 括号之外
  • 句法有误

此误发生于汝之码未行之前。

浏览器尝欲读汝之JavaScript文件…

…然立时放弃。

思之如句中语法之残缺。

若结构不合法,JavaScript不能解汝之指令。


苦痛之所在

一括号之失,可破全文。

尔将耗二十分之刻,以察错…

然所觉者,乃此:

}

入全屏模式 出全屏模式

阙矣.

造字之工.

而所阙之括,恒隐于至隐之境.

尤在层叠之条件内.

例:

if (loggedIn) {
  if (isAdmin) {
    console.log("Welcome")

入全景模式 出全景模式

看似无害

已完全损毁

是故,格式对齐之要,甚矣

善为格式,实可免调试之苦


3. 类型错误

此乃用之不当之时所生

例:

const user = null

console.log(user.name)

入全景模式 出全景模式

控制台:

TypeError: Cannot read properties of null

入全景模式 出全景模式


译文以人言

JavaScript曰:

“汝欲求存乎无物。”

此常发生于开发者未得数据而妄以为有之时。

而时下之网应用,恒与异步数据周旋。

是故此误,遍现于世。

官方定义

TypeError,乃值以非道之用而发,如欲取undefined之属,或呼其法。null.


此情多发于何处

尤以与:

  • API
  • DOM元素
  • 异步数据
  • 数组
  • 表单

例如:

document.getElementById("btn").addEventListener(...)

进入全屏模式 退出全屏模式

然按钮未现。

轰然.

谬误.

复有一常境:

后端返异数据.

尔期:

user.name

入全屏模式. 出全屏模式.

然API应曰:

null

入全屏模式. 出全屏模式.

今尔前端崩坏矣.

忽焉调试若侦探之役.


荷何以解之

先察其值存否:

if (user) {
  console.log(user.name)
}

入全屏模式 出全屏模式

或用可选链法:

console.log(user?.name)

入全屏模式 出全屏模式

微渺之司.

广博之宁.

亦可循守御之习,以度外物之变.

盖终将…

必至.


4. 未获应允之误

此误显于异步之失.

例:

fetch("/api/data")

入全景模式 退出全屏模式

若请求失败:

Uncaught (in promise)

进入全屏模式 退出全屏模式

官方定义

当一Uncaught Promise Error被拒绝,而拒绝未被.catch()try...catch妥善处理时,即发生一__JHSNS_SEG_72f79449_288__。


为何此感困惑

盖谬误非立时现也.

乃后时方发.迟而后至.是故排诘若逐魅影.

异步之JavaScript,易谬误之行止.

非立时败绩,乃潜行于背景之中.

及物有毁,则其谬若与本码绝离矣.

是故,异步调试初临,令人惑矣.


如何正处之

try...catch之术.

async function loadData() {
  try {
    const response = await fetch("/api/data")
    const data = await response.json()

    console.log(data)
  } catch (error) {
    console.error(error)
  }
}

入全屏模式 出全屏模式

今非默然崩坏,实可御其谬矣.

是重大之进益.

善处谬误于实应用中至为紧要.

盖因网络或溃.

服务器或崩.

用户失其网联.

API或超时.

而生产之应用必能从容度此困厄.


5. 未能载资源

此误常示:

“浏览器试载某物而失。”

或为:

  • 图像
  • API
  • CSS之文
  • JS之文
  • 字型

例:

Failed to load resource: 404

入全屏式 出全屏式

官方定义

Failed to Load Resource之失,乃浏览器不能自服务器成功取所求之文或资也。


404之真义

尔浏览器寻一文书…

…而服务器但云:

“未尝闻之。”

A404之误,乃所求之资不在其位也。

其资或为:

  • 图像
  • API之途
  • JavaScript之文
  • CSS之文
  • 或全页之文

路径一字之误,足以致此。

然或时网站犹有偏功,致弊端非立时可察。

是故匠者恒察ConsoleNetwork之页,共解其惑。

正式定义

404 Not Found之状态码,谓服务器虽达,然所求之资源于指定URL处不可得。

复次,吾尝详述HTTP状态码之理,如404403500诸般,并及其他服务器之玄机,皆载于下:

《诸开发者之梦魇:解404、403、500诸HTTP玄机》

若汝于调试之际尝惑于此数,彼文乃深释之。


常见之由

  • 路径之误
  • URL中谬误
  • 文件之删
  • 后端服务器未启

或有开发者更易文件名,然忘更正导入路径。

时,前端之码索求一API端点,然其已不复存矣。

时,后端之服务器竟不运行。

时…

尔耗一时辰以排之,方觉所书非是:

/api/user

入全屏模式 出全屏模式

而非:

/api/users

入全屏模式 退出全屏模式

痛.


开发者之最大谬误

见误…

…遽索之:

how to fix uncaught promise javascript stackoverflow

进入全屏模式 退出全屏模式

未尝读误.

此乃实情:

多數遊戲機錯誤,直白示之症結。

例:

Cannot read properties of undefined

入全屏模式 出全屏模式

此非玄奧。

此乃JavaScript直告:

「某物未定。勿假作其存。」

至要之能,在於緩行細讀。

诸多调试之误,起于开发者之急躁。

彼等以为。

彼等惊惶。

彼等随机更易代码,冀其或效。

然调试之效,一旦视误为鉴而非敌,则骤然大进。

控制台常示:

  • 误之类别。
  • 文件之名。
  • 行号
  • 时或竟至其致患之变量也

此信息至为宝贵。


吾实如何排错Console之误

此乃吾之实然之程也。

非炫丽之YouTube版本也。


第一步 — 读首行

非全栈跟踪。

惟首句意深.

例:

ReferenceError: user is not defined

入全屏模式 出全屏模式

此已足启人深思.

多者因遽览全报而眩惑.

然首句已明其本.

首注于此。


步骤二 — 寻文件及行号

控制台常示:

app.js:42

全屏模式开启 全屏模式退出

按之。

浏览器直引至问题之域。

此功能独有,时感违法。

既用源码映射,复以良善调试之器,则察弊之速大增。

今之浏览器,诚为绝妙之调试境也。


第三步——用console.log()

然。

犹是。

即老成之匠,亦恒用之。

例:

console.log(user)
console.log(data)
console.log(response)

入全景模式 退出全屏模式

汝实乃审汝之码也

汝问曰

“汝今实存何物?”

而控制台诚然答之

有时调试者不过打印值,直至事理复明


步第四—隔离其弊

勿审全应用也

辨一事。

问曰:

  • 其变量未定义乎?
  • 其 API 失灵乎?
  • 其元素缺失乎?
  • 其函数竟不运行乎?

察误易,若视之为惑则难。

一旦析其败处,众弊皆可驭矣。

一概求全,徒增迷惘。


台机实为师也

此言虽似悲壮,然实为真。

每台主机之谬误,皆教人知之。

  • JavaScript何为而作
  • 浏览器之行也如何
  • 异步代码之流转
  • 何谓范围之运作?
  • 何谓DOM渲染之道

进益最速者,常为善察谬者。

非徒记诵教程者。

盖真实之学,恒在事坏之后,未尝先之。

非先于事。

每谬必使君深悟其言实之性。

时日既久,君不复畏其差谬矣。

尔始学之。


一要事无人告尔

工于技者犹得台谕之误。

日日如是。

所异者:

初学者惶惑。
老成者则察之。

是已。

无所谓“吾不复得谬误”之境。

唯余:

“今吾知速觅其症矣。”

纵资深者,亦需时日以解诡惑之困.

其异者,惟经验助其速筛其途.

然无人能尽避谬误.

此乃软件开发之常情耳。

诚然,若汝之主机恒净无尘……

汝必未营造多物。


终篇之思

若汝之主机现满赤文……

善。

甚矣。

是谓汝在营造。

在毁坏。

在习得。

此系列所言之事,正如此。

日曜源流——我破之,乃释之。此系列非为完美代码而生。

乃为洞悉事崩之后之乱象。

诚然乎?

JavaScript之谬误,乃汝生平至善之师。

初时,控制台之境,令人目眩。

然终有所悟,彼赤色之讯,实助吾进益也。

每遇纷乱之虫,皆砺吾耐心。

每度排错之程,皆增吾解难之能。

每见差谬,渐使吾明软件幽微之理。

复奇者,

此实编码之至乐也。


行将远行…

有问简矣:

哪种终端之误最令汝烦?

  • undefined
  • null
  • 404
  • Unexpected token
  • Uncaught promise

凡为匠者,皆有一误,此误,立毁其心绪。

无须惊惶

当此之际,解之勿惊

待至第五回,再会。