重写依赖请求路径,处理/@modules/vue引用

接下来呢,我们要让import { createApp } from '/@modules/vue' 这句话的调用结果正常

  • 就是说,我们现在运行代码结果是这样

  • 但是http://localhost:8088/@modules/vue 是404

编写代码实现功能

  • 创建文件vite\src\serverPluginModuleResolve.js
const reg = /^\/@modules\//
const path = require('path')
const fs = require('fs').promises
function moduleResolvePlugin({app, root}){
app.use(async(ctx,next)=>{
// 如果没有匹配到/@modules/vue,就往下执行就行啦
if(!reg.test(ctx.path)){
return next()
}
const id = ctx.path.replace(reg, '')
let mapping={ // 就是它找的路径就是我们真实的VUE依赖的路径
vue: path.resolve(root,'node_modules','@vue/runtime-dom/dist/runtime-dom.esm-bundler.js')
}
const content = await fs.readFile(mapping[id],'utf-8')
ctx.type = 'js'
ctx.body = content
})
}
exports.moduleResolvePlugin = moduleResolvePlugin
  • 把插件引入到我们的主服务(就两行代码,不要搞错哦)
const Koa = require('koa')
const reWritePlugin = require('./serverPluginModuleRewrite')
const {moduleResolvePlugin} = require('./serverPluginModuleResolve')
const staticPlugin = require('./serverPluginServerStatic') function createServer() {
let app = new Koa()
// 实现静态服务功能,访问我们的服务器可以返回对应的文件koa-Static
const context = { // 创建一个上下文,给不同插件共享功能
app,
root: process.cwd() // 这个目录就在vite-vue
}
const resolvePlugin = [
moduleResolvePlugin,// 2.解决http://localhost:8088/@modules/vue请求问题
reWritePlugin, // 重写请求路径插件 ,为什么这么写这个顺序呢,原因解释放到插件里吧~~
staticPlugin, // 1.静态服务插件
]
resolvePlugin.forEach(plugin => plugin(context))
return app
}
createServer().listen(8088, () => {
console.log('xiaojin server is start at 8088')
console.log('修改代码跑一把')
})

刷新页面,跑一把看看

我明天继续写,我今天困了哦,哈哈,还是很开心,代码都顺利跑起来了

欢迎大家指出文章需要改正之处~

学无止境,合作共赢

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

最新文章

  1. python_爬虫一之爬取糗事百科上的段子
  2. C语言-《通讯录》
  3. python之前端
  4. Ip地址查询
  5. Codeforces 271 Div 2 B. Worms
  6. [转]http://lua-users.org/wiki/LpegTutorial
  7. 偷懒小工具 - SSO单点登录通用类(可跨域)(上)
  8. HTML5 canvas 在线画笔绘图工具(三)
  9. Android 开发之Matrix图片处理类的使用
  10. js实现复制文本内容到剪切板
  11. layui topbar图标(即返回顶部)未显示的解决方法
  12. 基于Dockerfile创建docker镜像
  13. virtualbox装个 ubuntu
  14. xadmin后台页面定制和添加服务器监控组件
  15. 安装win10操作系统的设备将要突破10亿台
  16. 第三篇:jmeter的作用域和执行顺序
  17. Eclipse 中 不能创建 Dynamic web project
  18. c语言学生信息管理系统-学习结构体
  19. yolov3源码分析keras(一)数据的处理
  20. iOS 单例模式简单实例

热门文章

  1. 39.BasicAuthentication认证
  2. 脚本之一键部署nexus
  3. vue 项目中不更新的问题
  4. IO学习笔记
  5. 国产图形化的msf——Viper初体验
  6. nacos的使用
  7. Cache的相关知识(二)
  8. Tauri+Rust+Vue 跨平台桌面应用简明教程(1)环境创建+系统事件+自定义菜单
  9. nc传输文件结束后不退出
  10. ES文件传输助手1.0.0