当前位置: 首页 > news >正文

vue项目打包里面pubilc里的 tinymce里的js文件问题

以下是解决 Vue 项目打包后 public/tinymce 中 JS 文件路径问题的完整方案:


问题原因

当使用 public 目录存放静态资源时,Vue CLI 默认会将 public 下的文件 直接复制到打包目录的根路径,但以下操作可能导致路径错误:

  1. 开发环境使用相对路径(如 ./tinymce/...
  2. 未正确配置 vue.config.jspublicPath
  3. 打包后文件路径层级发生变化

解决方案

1. 确认文件目录结构

确保项目结构如下:

public/
└── tinymce/
    ├── js/
    │   ├── tinymce.min.js       # 核心文件
    │   └── themes/             # 主题文件
    └── skins/                  # 皮肤文件
2. 动态加载 Tinymce 的正确姿势

在 Vue 组件中 动态拼接绝对路径

// 在组件初始化时加载 Tinymce
import { BASE_URL } from '@/config' // 或直接使用 process.env.BASE_URL

export default {
  mounted() {
    const tinymceScript = document.createElement('script')
    tinymceScript.src = `${BASE_URL}tinymce/js/tinymce.min.js`
    tinymceScript.onload = () => {
      this.initTinymce()
    }
    document.head.appendChild(tinymceScript)
  },
  methods: {
    initTinymce() {
      tinymce.init({
        selector: '#editor',
        skin_url: `${BASE_URL}tinymce/skins/ui/oxide`, // 关键路径配置
        theme_url: `${BASE_URL}tinymce/themes/silver/theme.min.js`
      })
    }
  }
}
3. 配置 vue.config.js
// vue.config.js
module.exports = {
  publicPath: process.env.NODE_ENV === 'production' 
    ? '/your-production-base-path/'  // 生产环境部署路径
    : '/',                           // 开发环境路径
  
  chainWebpack: config => {
    // 防止 Tinymce 相关文件被 Webpack 处理
    config.module
      .rule('tinymce')
      .test(/tinymce[\\/].+\.(js|css|woff|woff2|ttf|eot|svg)(\?.*)?$/)
      .use('file-loader')
      .loader('file-loader')
      .options({
        name: 'tinymce/[name].[hash:8].[ext]',
        esModule: false
      })
  }
}
4. 验证打包结果

检查 dist 目录结构:

dist/
├── tinymce/
│   ├── js/
│   └── skins/
├── css/
├── js/
└── index.html

常见问题排查

问题现象解决方案
404 找不到 JS 文件检查 publicPath 是否与部署路径匹配
主题/皮肤加载失败确认 skin_urltheme_url 路径是否指向打包后的目录
生产环境控制台报错开发环境正常使用 process.env.NODE_ENV 区分环境配置路径
字体文件加载失败vue.config.js 中添加字体文件的 file-loader 规则

替代方案(推荐)

如果项目允许,建议通过 npm 安装 Tinymce 以规避路径问题:

npm install tinymce @tinymce/tinymce-vue
// 在 Vue 中按需引入
import tinymce from 'tinymce/tinymce'
import 'tinymce/themes/silver/theme'
import 'tinymce/skins/ui/oxide/skin.min.css'

export default {
  mounted() {
    tinymce.init({ /* 配置 */ })
  }
}

通过以上配置,可确保 Tinymce 资源在不同环境下正确加载。如仍遇路径问题,建议结合浏览器开发者工具的 Network 面板 查看实际请求路径。

相关文章:

  • Linux 驱动中的资源获取与自动管理机制:深入理解与实战
  • iphone各个机型尺寸
  • Java权限修饰符深度解析
  • 【机器学习算法】基于python商品销量数据分析大屏可视化预测系统(完整系统源码+数据库+开发笔记+详细启动教程)✅
  • springboot starter机制,自动装配
  • LangChain-检索系统 (Retrieval)
  • Unity Standard Shader 解析(三)之ForwardBase(简化版)
  • WSL2安装多个版本的Ubuntu
  • 塑造现代互联网的力量:Berkeley在网络领域的影响与贡献
  • PowerBI中的DATEDIFF函数
  • Visual Studio 2019 配置VTK9.3.1
  • 观察者模式详解实战
  • Nacos:Nacos服务注册与服务发现超详细的源码解析(二)
  • Linux驱动开发:SPI设备树处理过程
  • 软件测试用例设计可用的一些设计方法,实例说明
  • Python 深度学习实战 第1章 什么是深度学习代码示例
  • AI+大数据:技术架构与实践应用
  • Java基础:一文讲透正则表达式
  • 【C++ 内存管理】静态分配和动态分配
  • 在android实现Google的web登录
  • 学校网站的英文/西安seo技术
  • 新疆兵团建设局的网站/网站运营优化培训
  • 南通昨晚最新疫情爆发/重庆网站seo费用
  • 跨境电商平台有哪些可以加盟/富阳seo关键词优化
  • 江苏盐城网站开发/深圳网络推广外包
  • 网站制作很好 乐云践新/网络优化工程师前景如何