Failed to load resource: net::ERR_CONNECTION_TIMED_cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.min.js‘

最近项目遇到这个问题,如图

访问系统是一直转圈圈,然后显示网络连接超时。

后来上网查看到这样一篇文章解决cdn.jsdelivr.net无法访问

笔者准备尝试下,使用子域名能否解决这个问题,或者使用国内的网站。解决的话会补充后续...

先讲讲为什么要用cdn,在我们的vue项目中,我们去访问系统,浏览器会自动下载vue、vue-router、vuex和axios等一些文件。但是下载的话会比较耗时,因为笔者想打开网页时直接访问别人的资源,用cdn来做会提高访问速度。因此在vue.config.js中写入了

const assetsCDN = {
  // webpack build externals
  externals: {
    vue: 'Vue',
    'vue-router': 'VueRouter',
    vuex: 'Vuex',
    axios: 'axios'
  },
  css: [],
  // https://unpkg.com/browse/vue@2.6.10/
  js: [
    '//cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.min.js',
    '//cdn.jsdelivr.net/npm/vue-router@3.1.3/dist/vue-router.min.js',
    '//cdn.jsdelivr.net/npm/vuex@3.1.1/dist/vuex.min.js',
    '//cdn.jsdelivr.net/npm/axios@0.21.1/dist/axios.min.js',
    // '//cdnjs.cloudflare.com/ajax/libs/vue/2.6.11/vue.js',
    // '//unpkg.com/vue-router@3.3.4/dist/vue-router.js',
    // '//cdn.bootcdn.net/ajax/libs/vuex/3.1.0/vuex.min.js',
    // '//unpkg.com/axios@0.19.2/dist/axios.min.js',
    '//cdn.bootcdn.net/ajax/libs/nprogress/0.2.0/nprogress.js',
    '//cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js',
    '//cdnjs.cloudflare.com/ajax/libs/js-cookie/2.2.1/js.cookie.min.js',

  ]
}

但是有时候会出现Failed to load resource: net::ERR_CONNECTION_TIMED_cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.min.js'这个错误。后续思考如何解决,今天先记录到这里

后续来了,把cdn.jsdelivr.net换成国内的域名就ok,但是需要自己去找对应的路径,这里改为这几个,加入zhimg,改为国内地址

'//cdnjs.cloudflare.com/ajax/libs/vue/2.6.11/vue.js',

 '//unpkg.zhimg.com/vue-router@3.3.4/dist/vue-router.js',

 '//cdn.bootcdn.net/ajax/libs/vuex/3.1.0/vuex.min.js',

 '//unpkg.zhimg.com/axios@0.19.2/dist/axios.min.js',

根据你提供的错误信息,问题的核心在于以下几个方面: 1. **`window.luckysheet.create is not a function`**:这表明 `luckysheet` 的初始化方法未正确加载。 2. **`Failed to load resource: net::ERR_CONNECTION_TIMED_OUT`**:CDN 资源加载失败,可能是网络问题或 CDN 地址不可用。 以下是详细的解决方案和代码调整。 --- ### 解决方案 #### 1. 确保资源正确加载 `luckysheet` 的资源包括 CSS 和 JS 文件。如果这些文件无法加载,会导致 `window.luckysheet.create` 方法不存在的问题。 - **检查网络连接**:确保你的开发环境能够访问 `https://cdn.jsdelivr.net/`。 - **替换 CDN 地址**:如果默认的 CDN 不可用,可以尝试使用其他可靠的 CDN 或本地托管资源。 #### 2. 动态加载资源时添加错误处理 在动态加载资源时,增加错误处理逻辑,确保所有依赖都成功加载后再执行渲染逻辑。 #### 3. 调整代码逻辑 以下是调整后的代码,重点修复了资源加载失败和初始化方法不存在的问题。 --- ### 代码调整 #### 动态加载资源并添加错误处理 ```javascript // src/utils/asynLoad.js export const asynLoad = (src, isCSS = false) => { return new Promise((resolve, reject) => { if (isCSS) { const link = document.createElement('link'); link.rel = 'stylesheet'; link.href = src; link.onload = () => resolve(); link.onerror = () => reject(new Error(`Failed to load CSS: ${src}`)); document.head.appendChild(link); } else { const script = document.createElement('script'); script.src = src; script.onload = () => resolve(); script.onerror = () => reject(new Error(`Failed to load JS: ${src}`)); document.body.appendChild(script); } }); }; ``` #### Excel 预览逻辑优化 ```javascript // src/utils/filePreview.js export const previewExcel = { async render(fileUrl, fileName, containerId) { try { // 动态加载 LuckySheet 资源 const baseURL = "https://unpkg.com/luckysheet@latest/dist"; // 替换为备用 CDN const resources = [ `${baseURL}/plugins/css/pluginsCss.css`, `${baseURL}/plugins/plugins.css`, `${baseURL}/css/luckysheet.css`, `${baseURL}/assets/iconfont/iconfont.css`, `${baseURL}/plugins/js/plugin.js`, `${baseURL}/luckysheet.umd.js` ]; await Promise.all(resources.map(src => asynLoad(src, src.endsWith('.css')))); if (!window.luckysheet) { throw new Error('Luckysheet 加载失败'); } // 获取 Excel 文件 const response = await axios.get(fileUrl, { responseType: 'arraybuffer' }); const arrayBuffer = new Uint8Array(response.data); const file = new File([arrayBuffer], fileName); // 转换并渲染 Excel return new Promise((resolve, reject) => { LuckyExcel.transformExcelToLucky(file, (exportJson, luckyIns) => { if (!exportJson.sheets || !exportJson.sheets.length) { reject('无法读取 Excel 文件内容'); return; } window.luckysheet.create({ container: containerId, data: exportJson.sheets, title: exportJson.info.name, lang: 'zh', showinfobar: false, allowEdit: false }); resolve(luckyIns); }, () => { reject('转换 Excel 文件失败'); }); }); } catch (error) { console.error('Error rendering Excel:', error); throw error; } }, destroy(instance) { if (instance && typeof instance.destroy === 'function') { instance.destroy(); } } }; ``` --- ### 给出解释 #### 1. **动态加载资源** - 使用 `asynLoad` 方法动态加载外部资源(如 CSS 和 JS 文件)。 - 在加载过程中添加错误处理逻辑,确保资源加载失败时能够捕获错误。 #### 2. **替换 CDN 地址** - 如果默认的 `jsdelivr` CDN 不可用,可以尝试使用其他 CDN(如 `unpkg`)。 - 替换后的 CDN 地址为 `https://unpkg.com/luckysheet@latest/dist`。 #### 3. **初始化方法不存在的问题** - 在动态加载资源后,检查 `window.luckysheet` 是否存在。 - 如果不存在,抛出错误提示用户加载失败。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值