You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 22:07:40