vscode运行hardhat本地开发需满足三条件:solidity插件手动绑定.sol文件语言模式、hardhat必须本地安装(非全局)、每个.sol文件首行严格写spdx许可证(如// spdx-license-identifier: mit)。

直接在 VSCode 里跑通 hardhat 本地开发,核心就三件事:插件认得 .sol 文件、hardhat 装在项目里而不是全局、每个合约顶部必须有 SPDX 许可证。漏掉任意一个,编译就卡住。
VSCode 打开 .sol 文件没高亮、没补全
这是最常见但最容易被忽略的起点。Solidity 插件(Juan Blanco 版)不会自动接管 .sol 文件,必须手动绑定语言模式。
- 打开任意
.sol文件,看右下角状态栏——如果显示 “Plain Text” 或 “Unknown”,说明没生效 - 点击该区域,在弹出菜单中搜索并选择
Solidity(不是Solidity (Beta)或其他变体) - 为避免每次手动切,进 VSCode 设置搜
files.associations,加一行:"*.sol": "solidity" - 确认插件已启用、VSCode 已重启、插件版本 ≥ 0.0.137(旧版语言服务器会崩溃)
npx hardhat compile 报错 Cannot find module 'hardhat'
这不是没装 hardhat,而是它没装在当前项目目录下。VSCode 终端默认工作路径可能不是你认为的那个“项目根目录”。
- 先确保你在合约项目文件夹里(比如
my-token/),不是随便开了个父级目录 - 运行
npm init -y生成package.json,再执行npm install --save-dev hardhat - 验证是否装对:执行
npx hardhat,应输出任务列表;若报错,检查当前目录下是否有node_modules/hardhat/ - VSCode 集成终端启动前,右键项目文件夹 → “Open in Integrated Terminal”,别靠记忆
cd
编译失败:SPDX license identifier not provided
这是 Solidity 0.6.8+ 的硬性要求,不是警告。Hardhat 默认开启严格检查,少一个文件,整个 npx hardhat compile 就中断。
- 在每个
.sol文件最顶部、第一行、前面不能有任何空行或字符,写:// SPDX-License-Identifier: MIT - 只允许用
MIT、Apache-2.0、Unlicense;写ISC或自定义字符串照样失败 - OpenZeppelin 的
@openzeppelin/contracts自带 SPDX,但你自己写的contracts/MyToken.sol必须手加 - 装了 Solidity 插件后,光标移到首行按
Ctrl+Space,能自动补全这行
想让编译和部署在 VSCode 里点几下就完成
可以,但依赖两个关键配置:一个是 hardhat.config.js 里声明好 Solidity 版本,另一个是 VSCode 任务系统要能调到本地 npx。
- 确保
hardhat.config.js包含类似内容:module.exports = { solidity: "0.8.20" };,版本号必须和你合约里的pragma solidity ^0.8.20;匹配 - 在
.vscode/tasks.json中定义一个 task,命令为npx hardhat compile,并设"group": "build",这样 Ctrl+Shift+B 就能触发 - 部署脚本(如
scripts/deploy.js)写好后,用npx hardhat run scripts/deploy.js --network localhost运行;注意localhost网络需提前用npx hardhat node启动 - 别指望“一键部署”真的一键——
localhost节点必须已在另一个终端运行着,否则会连接超时
真正容易卡住的地方,从来不是命令记不住,而是 VSCode 当前终端在哪、.sol 文件有没有被识别为 Solidity、SPDX 是不是真的在第一行。这三个点一校准,后面全是线性流程。











