Node.js入门:运行第一个JavaScript程序
完成安装后,最有效的验证不是寻找桌面图标,而是在项目目录创建`app.js`并用node命令运行。本教程只完成一个可重复的小程序,再解释目录、输出、错误和下一步项目化方式。
创建 app.js写入 console.lognode app.js检查输出脚本文件
.js文件可保存并重复运行。
终端输出
用输出和错误确认执行结果。
最小闭环
先完成app.js再引入依赖。
开始前检查运行环境
先确认当前终端确实可以调用运行时和包管理器,再创建练习目录。基础环境没有通过时继续编写代码,只会把路径问题和脚本错误混在一起。
打开新的终端,依次运行node --version和npm --version。两条命令都应返回版本;如果提示不是命令,先回到安装及环境配置。本站分发记录为16.17.0.0且已停止上游维护,因此新项目还应先确认是否需要选择仍受支持的LTS版本。
在文档目录之外创建一个专用练习文件夹,例如node-first-app。项目文件、依赖和终端操作都放在这个目录内,避免把脚本散落在下载目录。文件资源管理器如果隐藏扩展名,应先显示扩展名,防止把app.js保存成app.js.txt。
创建并运行第一个app.js
下面是完整的运行流程与最小示例。结果检查以终端输出第一个脚本结果为准,具体会出现Node.js ready和实际版本。
- 1.在项目文件夹中新建
app.js。 - 2.使用文本编辑器写入下面的代码并保存。
- 3.在该文件夹地址栏输入
powershell,或在终端中用cd进入目录。 - 4.执行
node app.js。 - 5.检查终端是否输出两行内容且没有红色错误信息。
操作顺序可以概括为创建文件夹、写入app.js、打开终端、运行node app.js、检查输出与错误。文件扩展名错误、终端目录错误、语法错误和命令命中旧版本是四个常见失败点。最终成功检查是终端输出预期文本且退出码正常。
console.log('Node.js ready');
console.log(`runtime: ${process.version}`);
预期第一行是Node.js ready,第二行显示当前运行时版本。这里的process.version来自实际执行脚本的Node.js,因此比根据安装目录猜测版本更可靠。如果输出与node --version不一致,检查终端、编辑器集成终端或版本管理器是否使用了不同环境。
终端目录决定Node.js从哪里找文件
node app.js中的相对路径从当前工作目录解析。终端若停在上一级目录,会出现找不到模块或文件的错误。先运行pwd(PowerShell)或cd查看当前目录,再用dir确认列表中确实有app.js。
也可以传入完整文件路径,但长期项目更适合先进入项目根目录再运行命令,因为配置文件、依赖目录和相对资源通常都以项目为单位。脚本中需要当前工作目录时可查看process.cwd(),需要当前模块文件位置时则应按所用模块系统获取文件路径,两者不是同一个概念。
学会阅读第一条错误信息
错误信息的第一段通常包含最接近根因的文件、行号和错误类型。先确认自己的命令与文件,再沿调用栈向下阅读,比只复制最后一行更有效。
语法错误通常会显示文件名、行号和指示位置;文件找不到常见提示包含MODULE_NOT_FOUND;模块格式不匹配可能出现require is not defined或Cannot use import statement outside a module。先阅读第一条错误和自己的文件路径,再看调用栈,不要只复制最后一行。
修改代码后必须保存文件再重新运行。若终端一直显示旧结果,确认运行的文件路径与编辑器正在修改的文件一致。where node可检查运行时位置,dir app.js可检查目标文件,两个信息通常足以排除“改了代码但没生效”的基本问题。
把一次运行变成可重复项目
可重复项目需要明确根目录、依赖清单、入口文件和启动命令。另一台电脑按照这些记录操作时,应得到相同结果,而不是依赖开发者本机的隐藏设置。
当脚本开始使用第三方依赖时,在项目根目录执行npm init -y生成package.json。随后使用npm install 包名进行本地安装,依赖会记录到项目配置并写入node_modules。详细流程见npm项目包管理。
可以在package.json的scripts中增加"start": "node app.js",以后使用npm run start执行。这样启动命令被项目记录下来,团队成员和自动化环境不必猜入口文件。脚本复杂后再增加测试、格式检查和开发启动命令,不要一开始堆入过多工具。
下一步练习清单
完成基础输出后,可以增加一个数字参数并把它转换为数值,再根据输入返回不同退出码。随后尝试读取一个JSON文件,处理文件不存在和JSON格式错误两个分支。每次只增加一个能力,并把运行命令与预期输出写在项目说明中,下一次回看时能迅速判断环境是否一致。
另一个实用练习是使用内置http模块返回一段纯文本。先确认本机端口没有被占用,启动后在浏览器访问本地地址,再按Ctrl+C正常停止进程。这个练习能把脚本执行、长驻进程、网络端口和退出操作串成一个最小服务流程。
本页回答的是创建app.js并在终端运行第一个Node.js程序。完成后下一步进入/npm/index.html,把一次脚本运行扩展为有依赖记录的项目。
先练习读取命令行参数process.argv,再练习使用内置fs模块读写一个文本文件。完成后尝试创建一个最小HTTP服务,并为错误分支设置明确状态码和日志。每个练习都保持“输入、运行命令、预期输出”三项记录,便于以后复查。
项目需要拆分文件时,先阅读CommonJS与ESM怎么选,统一require或import规则;版本不确定时看LTS选择;命令突然找不到时进入问题排查。需要重新核对安装器则回到Node.js下载页。
常见问题
node app.js没有任何输出是失败吗?
不一定。脚本只有在执行输出语句或出现错误时才会显示内容。先加入明确的console.log,并检查命令是否正常返回提示符。
为什么提示Cannot find module?
先确认当前目录和文件名;若缺的是第三方包,检查是否在项目目录完成npm install;若缺的是自己的文件,检查相对路径与扩展名。
可以直接在浏览器里运行这段代码吗?
示例使用process对象,它属于Node.js运行时,浏览器页面中默认不存在。浏览器和Node.js都执行JavaScript,但运行环境API不同。
每次修改代码都要重启命令吗?
基础方式需要保存后重新执行。开发服务器可使用监视模式或相关工具自动重启,但应先掌握手动运行和错误检查,避免工具掩盖路径问题。
第一个项目需要安装框架吗?
不需要。先用内置能力确认运行时、文件和终端流程,再引入第三方框架,更容易判断问题来自代码、环境还是依赖。
继续浏览
下一步怎么走
本页只解决一个主要问题,后续操作可按需求进入对应页面。