如何正确导入可在浏览器使用的JS模块,解决require未定义报错问题
问题原因
require() 是 Node.js 专属的 CommonJS 模块加载方法,浏览器原生运行环境没有提供该API,直接在前端代码中调用必然会触发未定义报错。你之前用browserify、requireJS没生效,大概率是工具配置或者调用方式不符合规范导致的。
修复方案
- 直接引入兼容浏览器的UMD格式文件
从bigdecimal的npm包dist目录下找到umd格式的编译文件,直接通过script标签引入页面,引入后bigdecimal会挂载到window全局对象,无需调用require即可直接使用。 - 修正browserify使用逻辑
browserify不能直接让浏览器支持require语法,你需要先在本地对包含require语句的前端代码执行打包:
运行打包命令browserify 你的入口文件路径.js -o 打包后输出文件路径.js
页面中只需要引入打包完成的输出文件,不要引入原始的源代码文件即可。 - 修正requireJS使用逻辑
requireJS遵循AMD规范,不能直接使用var xxx = require('xxx')的同步写法,需要改用异步回调格式:require.config({ paths: { "bigdecimal": "你的bigdecimal文件本地路径" } }) require(["bigdecimal"], function(bigdecimal) { // 所有用到bigdecimal的业务代码都要写在这个回调内部 }) - 现代项目推荐方案
改用ESModule语法,将导入语句改为import * as bigdecimal from 'bigdecimal',配合vite、webpack等前端构建工具使用,构建工具会自动处理模块依赖,编译为浏览器可直接运行的代码。
内容的提问来源于stack exchange,提问作者Jacob F
相关产品推荐
相关产品推荐

