@solana/web3.js 完全指南:安装、配置到生产级开发

·

想在浏览器、Node、React Native 甚至 Deno 项目中与 Solana 区块链交互,@solana/web3.js 是最原生、也最值得信赖的 JavaScript SDK。本文围绕 Solana JavaScript API 的安装、初始化、兼容性、常见坑位与进阶技巧进行拆解,带你从 0 到 1 快速搭建高可信的链上应用。

为什么选择 @solana/web3.js?

本文中出现的高频 关键词 包括:Solana JavaScript API、安装、浏览器兼容、Flow 类型、React Native、版本更新、测试验证器、贡献指南、开源地址。

1. 三步完成安装

1.1 包管理器安装

# Yarn
yarn add @solana/web3.js

# npm
npm install --save @solana/web3.js

1.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 与本地验证器

  1. 按文档安装 Solana CLI
    https://docs.solana.com/cli/install-solana-cli-tools
  2. 启动 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. 兼容矩阵速查

运行时最低版本说明
Chrome67+对应 BigInt/指数运算支持
Firefox68+
Safari14+含 iOS Safari
Edge79+
Opera55+
Samsung Internet9.2+
Node10.4+但建议 16+ 获得完整 WSS 支持
Deno1.0+
React Native0.70+需开启 Hermes

5. Flow 类型标记(已弃用)

最新主流从 Flow 迁移到 TypeScript。若坚持旧项目,可固定使用 v1.37.2

  1. 安装 npm i @solana/[email protected]
  2. 下载 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. 版本发布与参与贡献

每次发版都会附带一份 压缩浏览器包 与完整 API 文档,无需 Webpack,即可直接 <script src=".../index.iife.min.js"> 引入,非常适合写入教程或在线沙盒。

8. 安全与合规提示

SDK 自身是 MIT 许可证开源代码,但由此开发的 DApp 在商业运行时仍需注意:

本文所有技术指导仅供参考,实际部署前请自行审计,并确保符合当地合规要求。