通过Bash脚本修改VS Code配置时遇属性设置错误问题
问题:使用npm json工具修改VS Code配置时因带点键名报错
环境与当前配置
- Linux系统,VS Code配置文件路径:
$HOME/.config/Code/User/settings.json - 当前
settings.json内容:
{ "workbench.colorTheme": "Default Dark Modern" }
执行的Bash脚本
#! /usr/bin/bash json -I -f $HOME/.config/Code/User/settings.json -e 'this.workbench.colorTheme="Default Dark Modern"'
报错信息
undefined:3 this.workbench.colorTheme="Default Dark Modern" ^ TypeError: Cannot set properties of undefined (setting 'colorTheme') at Object.eval (eval at main (/usr/lib/node_modules/json/lib/json.js:1365:27), <anonymous>:3:26) at parseChunk (/usr/lib/node_modules/json/lib/json.js:1569:29) at /usr/lib/node_modules/json/lib/json.js:1426:13 at getInput (/usr/lib/node_modules/json/lib/json.js:738:17) at main (/usr/lib/node_modules/json/lib/json.js:1396:9) at Object.<anonymous> (/usr/lib/node_modules/json/lib/json.js:1764:5) at Module._compile (node:internal/modules/cjs/loader:1368:14) at Module._extensions..js (node:internal/modules/cjs/loader:1426:10) at Module.load (node:internal/modules/cjs/loader:1205:32) at Module._load (node:internal/modules/cjs/loader:1021:12) Node.js v21.7.1
问题分析与解决方法
报错的核心原因:workbench.colorTheme是一个完整的键名,并非嵌套对象的属性。用.访问时,工具会误解析为this.workbench对象下的colorTheme属性,但this.workbench不存在,因此抛出"Cannot set properties of undefined"错误。
解决方法1:使用括号访问完整键名
修改脚本中-e参数的访问方式,用括号包裹带点的键名:
json -I -f $HOME/.config/Code/User/settings.json -e 'this["workbench.colorTheme"]="Default Dark Modern"'
解决方法2:使用-E选项(版本支持时)
若你的json工具版本支持ES模块语法的-E选项,也可以这样写:
json -I -f $HOME/.config/Code/User/settings.json -E 'this["workbench.colorTheme"] = "Default Dark Modern"'
执行修改后的脚本后,查看settings.json即可确认配置已更新。
内容的提问来源于stack exchange,提问作者Scotti
相关产品推荐
相关产品推荐

