Node.js如何避免硬编码文件路径 实现代码共享时无需修改路径配置
方案1:使用相对路径自动匹配(适合固定和代码绑定的文本文件)
你只要把TextFile2.txt和你当前的JS代码文件放在同一个文件夹下,使用Node.js内置的__dirname变量(代表当前JS文件所在的目录)配合path模块拼接路径,就能完全避免硬编码绝对路径,不管把整个文件夹移到哪个位置、分享给任何人,都不需要修改路径代码。
修改后的完整代码如下:
const { readFileSync } = require('fs'); const path = require('path'); // 自动拼接当前JS文件所在目录下的TextFile2.txt路径 let file = path.join(__dirname, 'TextFile2.txt'); function countRepeatedWords(sentence) { const words = sentence.split(" ").filter(word => !!word); const wordMap = {}; for (let word of words) { const key = word.trim().toLowerCase(); const currentWordCount = wordMap[key]; wordMap[key] = (currentWordCount ?? 0) + 1; } const sortedEntries = Object.entries(wordMap).sort(([a,], [b,]) => a.localeCompare(b)); const sortedWordMap = Object.fromEntries(sortedEntries); // 注:原代码此处有两个连续return,第二个return永远不会执行,已删除冗余的return wordMap return sortedWordMap; } const words = readFileSync(file).toString(); console.log(countRepeatedWords(words));
方案2:使用命令行参数传入路径(适合每次统计不同文本文件的场景)
如果你需要经常更换不同的文本文件统计,不想每次改代码,可以直接从命令行参数读取路径,运行代码时指定要统计的文件即可:
修改路径部分的代码为:
let file = process.argv[2];
运行时在终端输入:node 你的代码文件名.js 要统计的文本文件路径
分享给其他人使用时,对方也只需要在运行时指定自己的文件路径,不需要修改代码本身。
内容的提问来源于stack exchange,提问作者Eero Jyrgenson
相关产品推荐
相关产品推荐

