不使用打包器的Express项目中导入axios模块报错求助
解决浏览器ES模块导入axios的报错问题
你遇到的这个错误是因为浏览器原生ES模块不支持直接通过包名(比如axios)导入npm模块,它只认相对路径(.//../)、绝对路径或者完整的URL。不想用打包器的话,有几个简单的解决办法:
方法1:用CDN的ES模块版本直接导入
把login.js里的import axios from 'axios';替换成CDN提供的ES模块地址,比如:
import axios from 'https://cdn.jsdelivr.net/npm/axios@1.6.0/+esm';
选一个稳定的axios版本即可,这样浏览器能直接从CDN加载模块,不需要依赖本地的node_modules。
方法2:复制axios的ES模块文件到静态资源目录
- 从项目的
node_modules/axios/dist/目录里找到axios.esm.js文件 - 把它复制到项目的静态资源文件夹(比如
public/js/) - 在login.js里用相对路径导入:
// 假设login.js和axios.esm.js在同一目录下 import axios from './axios.esm.js';
顺便提下你代码里的语法问题(不影响当前报错但会导致功能异常)
window.setTimeout的语法错误,缺少闭合的花括号和逗号:window.setTimeout(() => { location.assign('/'); }, 5000);- logout函数里的if判断用了赋值符号
=,应该是全等判断===:if (res.data.status === 'success') location.reload(true); - login和logout的try代码块都缺少闭合的
},导致catch无法正常关联
内容的提问来源于stack exchange,提问作者Omar
相关产品推荐
相关产品推荐

