首页 前端知识 node模块导入异常 SyntaxError: The requested module ‘/xxx.js‘ does not provide an export named ‘xxx‘ 解决方方法

node模块导入异常 SyntaxError: The requested module ‘/xxx.js‘ does not provide an export named ‘xxx‘ 解决方方法

2024-09-10 23:09:44 前端知识 前端哥 771 519 我要收藏

在node中导入自定义的模块中的方法时提示  vue-router.esm-bundler.js:3302 SyntaxError: The requested module '/src/utils/request.js?t=123' does not provide an export named 'service' (at parser.js?t=123:1:9)

异常代码:

import {service,rmCache} from '@/utils/request'

我们的request.js文件中是这样定义的, 在这个文件里面我们定义了一个导出函数 rmCache 和一个默认的导出 service, 这个service是我们创建的一个axios对象

// 创建axios实例
const service = axios.create({
  // axios中请求配置有baseURL选项,表示请求URL公共部分
  baseURL: import.meta.env.VITE_APP_BASE_API,
  // 超时
  timeout: 10000
})

// 通用缓存清理方法
export function rmCache(prefix) {
    //.....省略
}

export default service

导致异常的原因

对于模块中定义的默认导出对象 export default xxx  不能使用命名导入的方式来导入

解决方法

将导入代码改为这样即可

// 导入默认的 export default ,注意这里的service是export default的别名,可以是任何你想要的名字,和request.js中你定义的默认导出对象名称无关!
import service from '@/utils/request'

// 命名导入方式,这里导入的是你在模块中使用 export function xxx定义的函数,有多个可使用逗号分隔,如 { rmCache, download }
import {rmCache} from '@/utils/request'

总结:

        node模块化开发里面导出的 export function xxx和 export default XXX 他们在导入的时候需要使用不同的导入方法,对于 export default XXX 由于这里的XXX 对象他实际上就类似是一个匿名的对象,所以在你使用import导入的时候 名称是可以由你自己随意的命名,故他不能使用命名方式导入, 而是应该将他单独作为一行来导入 ,即 import  abc from '模块名' 这里的abc名称你可以随意定义,他代表的就是你在模块里面使用 export default 导出的对象。

   而我们在模块里面使用 export function xxx 导出的函数,在使用import 导入的时候我们就应该使用命名方式导入,且导入的名称必须要和你在模块里面导出的名称一致。

转载请注明出处或者链接地址:https://www.qianduange.cn//article/18104.html
评论
发布的文章

jQuery 选择器

2024-05-12 00:05:34

cdn引入前端插件

2024-10-13 20:10:14

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!