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

使用solana/web3.js时Jest解析文件失败,求解决方案

解决Jest无法解析solana/web3.js的方案

核心原因

solana/web3.js依赖Node.js内置模块(如crypto、stream),且部分代码使用ES模块语法,Jest默认配置无法处理这些情况。

具体解决步骤

1. 配置Next.js专属Jest环境

安装官方适配的jest工具:

npm install --save-dev next/jest jest @types/jest

在项目根目录创建jest.config.js,添加以下配置:

const nextJest = require('next/jest')

const createJestConfig = nextJest({
  dir: './',
})

const customJestConfig = {
  testEnvironment: 'jsdom',
  moduleNameMapper: {
    // 指定使用web3.js的浏览器兼容版本
    '^@solana/web3.js$': '<rootDir>/node_modules/@solana/web3.js/lib/index.browser.esm.js',
    // 模拟Node.js内置模块为浏览器兼容版本
    '^crypto$': 'crypto-browserify',
    '^stream$': 'stream-browserify',
  },
  transformIgnorePatterns: [
    // 允许Jest转换solana相关模块,避免语法解析错误
    '/node_modules/(?!@solana/web3.js)',
  ],
}

module.exports = createJestConfig(customJestConfig)

2. 安装浏览器兼容依赖

npm install --save-dev crypto-browserify stream-browserify

3. 适配TypeScript(如果使用)

在tsconfig.json中添加Jest和Node类型声明:

{
  "compilerOptions": {
    "types": ["jest", "@types/node"]
  }
}

4. 验证配置

运行测试命令,检查是否还存在解析错误:

npm run test

额外排查点

  • 若仍有问题,尝试删除node_modules和package-lock.json(或yarn.lock),重新执行npm install
  • 确保next和jest版本处于兼容区间(建议使用Next.js 12+版本)

内容的提问来源于stack exchange,提问作者Rob P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:01:14