vue-cli3 多入口文件 配置cdn报错

本文详细介绍了在Vue项目中遇到的因多入口配置导致的CDN引用错误,以及如何针对性地解决该问题。提供了一种方案,即在生产环境中通过条件判断为特定页面配置CDN,并给出了当所有页面都需要配置CDN时的解决方案链接。对于前端开发者来说,这是一篇关于优化项目构建和资源引用的重要参考资料。

问题:报错Cannot call .tap() on a plugin that has not yet been defined. Call plugin(‘html’).use() …

原因:在pages中配置了多入口,导致配置cdn时无法找到唯一页面

  pages: {
    index:{
        entry:  "src/main.js", 
    },
    pay:{
      entry:'public/pay/pay.js',
    }
  }

解决办法:

1、如果仅需某个页面配置 cdn:

if (isProd) {
//下面的'html-index'中的index和上面pages的key值对应
      config.plugin('html-index')
        .tap(args => {
          args[0].cdn = assetsCDN
          return args
        })
    }

2、如果每个页面都需要配置cdn,则参考下面这篇(很详细哒)

https://blog.youkuaiyun.com/qq_18149661/article/details/107233451

`require is not defined` 错误通常出现在使用 ES6 模块化系统(如 `import ... from '...'` 或 `export`) 的环境里,并尝试在一个使用 CommonJS 规则(通常通过 `require()` 函数引入模块)的环境中运行代码的时候。 ### Vue.js 中的上下文 Vue.js 本身支持两种不同的脚本加载模式: 1. **运行时编译**(仅支持 CommonJS 和 ESM) 2. **模板编译**(仅支持字符串模板) ### 报错原因 当试图在一个只支持 CommonJS 的环境下使用 ESM (例如 Node.js 的默认模块系统)时,会触发上述错误。这是因为 `require` 是用于加载 CommonJS 模块的语法,而在 ESM 环境下应该使用 `import` 关键字。 ### 解决方案 如果你是在开发 Vue 应用程序并且遇到 `require is not defined` 错误,那么需要检查并确认你使用的文件和导入语法是否匹配当前的工作环境: #### 对于使用 Vue CLI 创建的项目: 在大部分情况下,如果你正在使用 Vue CLI 构建的应用,它会自动处理这两种模块系统的差异。你需要做的只是确保所有引入的模块都使用了正确的语法。例如: - 使用 ESM 导入 Vue 实例和其他依赖: ```javascript import { createApp } from 'vue'; import App from './App.vue'; const app = createApp(App); app.mount('#app'); ``` - 如果外部库使用了 CommonJS,你需要在项目根目录的 `package.json` 文件中添加对它的依赖,并配置相应的 `main` 属性。 ```json "dependencies": { //... "your-library": "file:path/to/library" } ``` 同时,在项目的入口文件或脚本中,确保引入的是正确版本的 Vue: ```javascript // index.js or main.js import Vue from 'vue/dist/vue.esm-bundler'; // 或者如果你从源码构建: import Vue from 'https://cdn.jsdelivr.net/npm/vue@next/dist/vue.esm-browser' ``` #### 针对特定场景 如果以上步骤都无法解决问题,可能是因为某个特定库的内部实现问题或者是 Vue 特定版本的兼容性问题。在这种情况下: 1. 更新到最新版的 Vue 和相关的依赖。 2. 查阅官方文档或社区讨论了解是否有针对特定版本的问题修复或建议。 3. 直接查看该库的源代码或报告给开发者寻求帮助。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值