Node.js生成README时许可证徽章不显示问题求助
Node.js生成README时许可证徽章无法显示的问题解决
核心问题是错误地将liceChoice当成数组处理:inquirer的rawlist类型返回的是选中的单个字符串,而非数组,你代码里的data.liceChoice[0]只会取到字符串的第一个字符,导致所有许可证匹配条件都不触发,最终返回空的徽章字符串。
修复步骤:
修正许可证类型取值
把licenseBadge函数里的const liceType = data.liceChoice[0];改成const liceType = data.liceChoice;,直接使用选中的完整许可证字符串做匹配。补全AGPL徽章的完整语法(可选但规范)
原AGPL的徽章代码缺少链接部分,补全后符合标准Markdown图片链接格式,点击徽章可以跳转至许可证详情页。优化条件判断(可选)
将多个if语句替换为switch,代码逻辑更清晰易维护。
修复后的完整generateMarkdown.js代码:
function licenseBadge(data) { const liceType = data.liceChoice; // 直接使用完整选中的许可证字符串 let licenseString = ""; switch(liceType) { case "GNU AGPLv3": licenseString = `[](https://www.gnu.org/licenses/agpl-3.0)`; break; case "GNU GPLv3": licenseString = ``; break; case "GNU LGPLv3": licenseString = ``; break; case "Mozilla Public License 2.0": licenseString = ``; break; case "Apache License 2.0": licenseString = ``; break; case "MIT License": licenseString = ``; break; default: licenseString = ""; } return licenseString; }; function generateMarkdown(data) { return `# ${data.siteName || "未命名项目"} ${licenseBadge(data)} ## 许可证 ${data.liceChoice} `; } module.exports = generateMarkdown;
验证
运行代码后,选中任意许可证,生成的README中会正确渲染对应徽章,同时许可证文本正常显示。
内容的提问来源于stack exchange,提问作者Heinz Ulrich V
相关产品推荐
相关产品推荐

