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

NodeJS模块导入报错:无法解析标识符,如何使用tonweb?

解决浏览器端导入tonweb和@orbs-network/ton-access的问题

方法一:使用正确的CDN ES模块导入

你之前用的CDN路径不对,tonweb的ES模块入口并非src/index.min.js,需使用官方编译好的ES模块版本,同时调整导入方式适配包的导出结构:

  1. 导入tonweb
    在app.js中使用正确的CDN路径,按需选择导入方式:

    // 导入整个tonweb模块
    import * as TonWeb from 'https://cdn.jsdelivr.net/npm/tonweb@0.0.62/dist/tonweb.es.min.js';
    // 或直接导入核心类
    import { TonWeb } from 'https://cdn.jsdelivr.net/npm/tonweb@0.0.62/dist/tonweb.es.min.js';
    
  2. 导入@orbs-network/ton-access
    同样使用ES模块版本的CDN路径:

    import { getHttpEndpoint } from 'https://cdn.jsdelivr.net/npm/@orbs-network/ton-access@2.3.0/dist/index.esm.min.js';
    

    注意:尽量指定稳定版本号,避免CDN路径指向未兼容ES模块的包版本。

方法二:通过打包工具处理依赖(推荐生产环境)

浏览器原生无法解析Node.js模块规范,直接导入node_modules会触发404(Express默认不暴露该目录),推荐用打包工具将依赖打包到前端代码中:

  1. 初始化并安装依赖
    在项目目录执行:

    npm init -y
    npm install tonweb @orbs-network/ton-access
    
  2. 用Vite快速打包

    • 安装Vite:npm install vite --save-dev
    • 创建vite.config.js,配置打包输出到public/js:
      import { defineConfig } from 'vite';
      
      export default defineConfig({
        build: {
          outDir: './public/js',
          rollupOptions: {
            input: './src/app.js', // 将原app.js移至src目录
            output: {
              entryFileNames: 'app.bundle.js',
            },
          },
        },
      });
      
    • 修改index.html引入打包后的文件:
      <script type="module" src="/js/app.bundle.js"></script>
      
    • 执行打包:npx vite build,之后启动Express服务即可。

方法三:配置Express暴露node_modules(仅本地测试)

若仅用于本地测试,可让Express将node_modules设为静态目录:
在index.cjs中添加:

const express = require('express');
const app = express();

// 暴露node_modules目录
app.use('/node_modules', express.static('node_modules'));

app.use(express.static('public'));

app.listen(3000, () => console.log('Server running on port 3000'));

然后在app.js中用相对路径导入:

import * as TonWeb from '/node_modules/tonweb/dist/tonweb.es.min.js';
import { getHttpEndpoint } from '/node_modules/@orbs-network/ton-access/dist/index.esm.min.js';

此方法会暴露整个node_modules目录,存在安全风险,禁止用于生产环境。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:32:52