根本原因是语言模式未激活、hardhat未本地安装、spdx许可证声明缺失:需点击右下角选solidity,项目根目录npm install --save-dev hardhat,并在每个.sol文件首行添加// spdx-license-identifier: mit。

VSCode 本身不带 Solidity 支持,装了插件也不高亮、编译报错、终端找不到 hardhat——这些问题基本都卡在三个地方:语言模式没手动激活、Hardhat 没本地安装、每个 .sol 文件缺 SPDX 许可证声明。
为什么 .sol 文件没语法高亮?
VSCode 默认把 .sol 当作纯文本,即使装了 Juan Blanco 的 Solidity 插件也不会自动生效。
- 打开任意
.sol文件,看右下角状态栏(比如显示 “Plain Text”),点击它 - 在弹出菜单中搜索并选择 Solidity(不是
Solidity (Beta)或其他变体) - 如果列表里没有
Solidity,检查插件是否启用、VSCode 是否重启、插件版本是否 ≥0.0.137(旧版有语言服务器崩溃问题) - 顺手在设置里搜
files.associations,加一条:"*.sol": "solidity",一劳永逸
npm install -g hardhat 为什么不行?
全局安装会导致 VSCode 集成终端找不到本地 node_modules/.bin/hardhat,报错 Cannot find module 'hardhat' 是典型症状。
- 必须进到你的项目根目录(比如
my-contract/)再操作 - 先运行
npm init -y初始化package.json - 再运行
npm install --save-dev hardhat(注意是--save-dev,不是-g) - 验证:执行
npx hardhat,应输出任务列表;若失败,确认当前目录下有package.json和node_modules/hardhat/ - VSCode 终端默认工作目录可能不是项目根,启动前手动
cd进去,或右键文件夹 → “Open in Integrated Terminal”
编译总报 SPDX license identifier not provided?
这是 Solidity 0.6.8+ 的硬性要求,不是警告,是编译失败项。Hardhat 默认开启严格检查,而很多示例代码漏写了这行。
- 每个
.sol文件**第一行**必须是 SPDX 声明,例如:// SPDX-License-Identifier: MIT - 不能写在
pragma后面,也不能空行隔开;必须紧贴文件开头 - 许可证 ID 必须是 SPDX 官方认可的,
MIT、Apache-2.0、Unlicense都可以,但// SPDX-License-Identifier: none不合法 - 如果用的是旧教程代码,复制过来后第一件事就是补上这行,否则
npx hardhat compile必然失败
最容易被忽略的是:SPDX 声明必须出现在文件最开头,且 VSCode 的 Solidity 插件不会帮你自动补全——它只校验,不修复。哪怕多一个 BOM 字符或不可见空格,都可能导致识别失败。











