想在浏览器、Node、React Native 甚至 Deno 项目中与 Solana 区块链交互,@solana/web3.js 是最原生、也最值得信赖的 JavaScript SDK。本文围绕 Solana JavaScript API 的安装、初始化、兼容性、常见坑位与进阶技巧进行拆解,带你从 0 到 1 快速搭建高可信的链上应用。
为什么选择 @solana/web3.js?
- 官方背书:与 Solana JSON RPC 全面对齐,更新频率紧跟主网。
- 跨端兼容:支持浏览器、Node.js、Deno、React Native。
- 高性能异步接口:基于 Promise 与 BigInt,大量交易并行无阻塞。
- 社区资源丰富:Solana Cookbook、海量开源示例库及中文教程齐备。
本文中出现的高频 关键词 包括:Solana JavaScript API、安装、浏览器兼容、Flow 类型、React Native、版本更新、测试验证器、贡献指南、开源地址。
1. 三步完成安装
1.1 包管理器安装
# Yarn
yarn add @solana/web3.js
# npm
npm install --save @solana/web3.js1.2 浏览器 UMD 引入
<script src="https://unpkg.com/@solana/web3.js/lib/index.iife.min.js"></script>
<script>
console.log(window.solanaWeb3);
</script>1.3 Deno 一行加载
import * as solanaWeb3 from "https://esm.sh/@solana/web3.js";2. 开发环境完整设置
2.1 CLI 与本地验证器
- 按文档安装 Solana CLI
https://docs.solana.com/cli/install-solana-cli-tools 启动 solana-test-validator
solana-test-validator --reset默认 RPC 端点即为
http://localhost:8899,仅需在Connection中替换即可。
2.2 BPF 程序编译
cargo build-bpf将生成的 .so 部署到测试网或验证器后,交互示例可见 👉 查看完整实战案例:如何3分钟部署智能合约并订阅事件
3. 两分钟上手示例
3.1 CommonJS
const solanaWeb3 = require('@solana/web3.js');
const connection = new solanaWeb3.Connection(
'https://api.devnet.solana.com',
'confirmed'
);
console.log(await connection.getLatestBlockhash());3.2 ES6 Module
import { Connection } from '@solana/web3.js';
const conn = new Connection('https://api.mainnet-beta.solana.com');3.3 React Native
需确保 RN 版本 ≥0.70,并使用 Hermes 引擎。
官方集成指引:https://solanacookbook.com/integrations/react-native.html
4. 兼容矩阵速查
| 运行时 | 最低版本 | 说明 |
|---|---|---|
| Chrome | 67+ | 对应 BigInt/指数运算支持 |
| Firefox | 68+ | |
| Safari | 14+ | 含 iOS Safari |
| Edge | 79+ | |
| Opera | 55+ | |
| Samsung Internet | 9.2+ | |
| Node | 10.4+ | 但建议 16+ 获得完整 WSS 支持 |
| Deno | 1.0+ | |
| React Native | 0.70+ | 需开启 Hermes |
5. Flow 类型标记(已弃用)
最新主流从 Flow 迁移到 TypeScript。若坚持旧项目,可固定使用 v1.37.2:
- 安装
npm i @solana/[email protected] 下载 Flow libdef 并添加到
.flowconfig[libs] node_modules/@solana/web3.js/module.flow.js
6. 常见问题 FAQ
Q1:为什么浏览器报错 BigInt is not defined?
A:请检查浏览器版本,或转译配置中启用 @babel/plugin-syntax-bigint。
Q2:npm install 卡住怎么办?
A:大概率是网络原因,可设置官方镜像或使用 --registry=https://registry.npmmirror.com。
Q3:如何切换测试网、主网 RPC?
A:仅需替换 Connection 构造器中的 URL:
const net = process.env.REACT_APP_NETWORK ?? 'devnet';
const url = net === 'mainnet'
? 'https://api.mainnet-beta.solana.com'
: 'https://api.devnet.solana.com';Q4:React Native Metro bundler 打包体积过大?
A:启用 Hermes + splitChunks,对 crypto 依赖采用 react-native-crypto 替代。
Q5:如何判断 SDK 是否已加载?
A:Node/浏览器均可使用 if (solanaWeb3 && solanaWeb3.Connection) {...}。
Q6:找不到 solana-test-validator 命令?
A:确保 PATH 包含 $HOME/.local/share/solana/install/active_release/bin。
7. 版本发布与参与贡献
- 发行版查询:
GitHub releases:https://github.com/solana-labs/solana/releases
npmjs.com:https://www.npmjs.com/package/@solana/web3.js - 提交 Issue / PR:请前往官方 monorepo
https://github.com/solana-labs/solana
👉 看这里快速定位贡献指南与社区约定
每次发版都会附带一份 压缩浏览器包 与完整 API 文档,无需 Webpack,即可直接 <script src=".../index.iife.min.js"> 引入,非常适合写入教程或在线沙盒。
8. 安全与合规提示
SDK 自身是 MIT 许可证开源代码,但由此开发的 DApp 在商业运行时仍需注意:
- 遵守所在国/地区区块链监管政策;
- 不服务制裁名单个人或实体;
- 警惕链上匿名地址的溯源需求。
本文所有技术指导仅供参考,实际部署前请自行审计,并确保符合当地合规要求。