如何在终端运行Node.js代码时指定要读取的文本文件
实现命令行指定目标文件的方案
当然可以实现!Node.js 内置了获取命令行参数的能力,完全不用额外依赖就能搞定你的需求,核心就是用 process.argv 这个全局变量。
核心原理
process.argv 是一个数组,它会包含你启动 Node.js 进程时的所有命令行参数:
- 第一个元素是 Node.js 可执行文件的路径
- 第二个元素是当前运行的脚本文件路径
- 从第三个元素开始,就是你手动传入的自定义参数(比如你要的
input.txt)
改造后的代码示例
把你原来硬编码文件名的逻辑改成从命令行参数读取,同时加上参数校验避免出错:
const fs = require('fs'); // 获取命令行传入的文件名(第三个参数) const filename = process.argv[2]; // 校验用户是否传入了文件名 if (!filename) { console.error('请指定要读取的文件,例如:node index.js input.txt'); process.exit(1); // 退出进程并返回错误码 } // 读取文件(逻辑和你原来的一致,只是文件名换成了参数值) try { const data = fs.readFileSync(`${process.cwd()}/${filename}`).toString().split(/\r?\n/); // 这里可以添加你的业务逻辑,比如打印读取到的数据 console.log('读取到的文件内容行:', data); } catch (err) { console.error('读取文件失败:', err.message); process.exit(1); }
使用方式
现在你只需要在终端里这样启动脚本就行:
node index.js input.txt
如果需要读取其他文件,直接替换 input.txt 为目标文件名即可,比如:
node index.js another-file.txt
进阶扩展(可选)
如果你的需求更复杂(比如需要支持多个文件、参数选项等),可以考虑使用专门的命令行参数解析库,比如 commander.js,不过对于你当前的简单需求,用原生的 process.argv 就足够啦。
内容的提问来源于stack exchange,提问作者Alicja Kaźmierczak
相关产品推荐
相关产品推荐

