diff --git a/lib/config.js b/lib/config.js index 63781524..17c9a2bf 100644 --- a/lib/config.js +++ b/lib/config.js @@ -94,6 +94,11 @@ export const siteConfig = (key, defaultVal = null, extendConfig = {}) => { return convertVal(val) } +export const cleanJsonString = val => { + // 使用正则表达式去掉不必要的空格、换行符和制表符 + return val.replace(/\s+/g, ' ').trim() +} + /** * 从环境变量和NotionConfig读取的配置都是string类型; * 这里识别出配置的字符值若为否 数字、布尔、[]数组,{}对象,若是则转成对应类型 @@ -128,13 +133,16 @@ export const convertVal = val => { } // 配置值前可能有污染的空格 - if (val.indexOf('[') < 0 && val.indexOf('{') < 0) { + // 如果字符串中没有 '[' 或 '{',则直接返回 + if (!val.trim().startsWith('{') && !val.trim().startsWith('[')) { return val } // 转换 [] , {} 这类字符串为对象 try { + val = cleanJsonString(val) const parsedJson = JSON.parse(val) + // 检查解析后的结果是否为对象 if (parsedJson !== null) { return parsedJson }