为什么浏览器网络面板出现两个相同js-big-decimal文件且报404
错误原因
- 环境兼容问题:
js-big-decimal默认适配Node.js环境,代码中使用了Node专属的global全局对象,浏览器环境没有这个对象,所以会抛出global is not defined报错。 - 重复请求与404问题:你同时在HTML中硬编码引入了
js-big-decimal,又未对requireJS做模块路径配置,requireJS会默认从站点根路径请求js-big-decimal.js文件,导致两个请求同时发出,根路径下没有对应文件就返回404。 - 导入语法错误:AMD规范下require回调的参数和前面的依赖数组是一一对应的,你不需要在回调里再二次调用require获取模块,路径写法也不符合requireJS的规则。
修复步骤
- 修正express静态资源配置(如果没配的话),确保node_modules下的资源可以被访问:
// 你的express入口文件中添加 app.use('/node_modules', express.static('node_modules'));
- 调整HTML中的引入代码,删除多余的
js-big-decimal硬引入,添加requireJS配置和global polyfill:
<!-- 只保留requireJS的引入 --> <script src="/node_modules/requirejs/require.js"></script> <script> // 兼容Node包的global对象 window.global = window; // 配置requireJS模块路径 require.config({ baseUrl: '/', paths: { // 指定js-big-decimal的浏览器适配版本路径 'js-big-decimal': '/node_modules/js-big-decimal/dist/web/js-big-decimal.min.js' } }); </script>
- 调整你的业务JS代码,修正导入语法:
require(['js-big-decimal'], function (bigDecimal) { // 直接使用回调传入的bigDecimal对象即可 // 示例:计算两个数的和 const result = bigDecimal.add('123.45', '67.89'); console.log(result); });
内容的提问来源于stack exchange,提问作者Jacob F
相关产品推荐
相关产品推荐

