前端部署中Unexpected token ‘<‘错误排查与解决方案
1. 问题现象与本质剖析如果你在浏览器控制台看到Uncaught SyntaxError: Unexpected token ‘‘这个错误心里多半会咯噔一下。这个错误太常见了尤其是在前端项目部署后或者本地开发服务器刷新页面时。错误信息直白地告诉你JavaScript 引擎在解析你的.js文件时期待的是合法的 JavaScript 代码但第一个遇到的字符却是一个“”小于号。在绝大多数情况下这意味着浏览器请求的 JavaScript 文件没有成功加载到真正的 JS 代码而是加载到了一个 HTML 文档而这个 HTML 文档的开头正是!DOCTYPE html或者html。所以这个错误的本质是资源路径错误或服务器配置错误导致浏览器把 HTML 页面当成了 JS 脚本来解析。它不是一个语法错误而是一个“加载错误”的体现。这个问题在 Vue、React 等现代前端框架的打包部署中尤为高发因为它们的资源引用路径由publicPath、base等配置决定非常关键。热词中频繁出现的Vue、publicPath、打包也印证了这一点。接下来我们就从最常见的场景出发手把手带你定位并解决这个问题。2. 核心排查链路从浏览器到构建配置遇到这个问题不要慌按照一个系统性的排查链路来走可以快速定位问题根源。这个链路遵循从外到内、从现象到配置的顺序。2.1 第一步检查浏览器网络请求这是最直接、最有效的一步。打开浏览器的开发者工具F12切换到Network网络标签页然后刷新页面重现错误。筛选 JS 文件在网络请求列表中点击筛选按钮通常只勾选JS类型。这样你会看到页面加载的所有 JavaScript 文件。寻找异常请求仔细查看每个.js文件的请求。你需要重点关注两列Status状态理想状态是200成功。如果你看到404未找到、304缓存或200但内容不对那就是线索。Size大小观察文件大小。一个异常的.js文件如果其大小和你预期的index.html文件大小接近比如几十KB的JS却只有1KB或者几百KB那就非常可疑。查看响应内容直接点击那个你认为可疑的请求在Preview预览或Response响应标签页中查看服务器返回的内容。如果你在这个.js文件的响应里看到了 HTML 代码以!DOCTYPE html开头那么恭喜你问题根源已经找到了一半。记下这个请求的完整 URL。例如你可能会发现请求的URL是https://your-domain.com/static/js/app.abc123.js但返回的却是你的index.html的内容。这说明服务器没有在这个路径下找到真正的app.abc123.js文件于是回退返回了index.html这在一些服务器配置中是默认行为。2.2 第二步分析资源路径的构成找到返回 HTML 的 JS 文件请求 URL 后我们需要解构这个 URL理解它是如何生成的。一个前端应用的资源路径通常由三部分组成部署根路径构建输出路径文件名哈希。部署根路径 (publicPath/base)这是所有静态资源的公共前缀。如果你的应用部署在域名的根目录如https://example.com那么publicPath通常是/。如果部署在子路径下如https://example.com/my-app/那么publicPath必须是/my-app/。这是最容易出错的地方。Vue CLI 中对应vue.config.js的publicPathVite 中对应baseWebpack 中也可以在 output 里配置publicPath。构建输出路径这是打包后 JS 文件存放的目录相对于publicPath。例如Webpack 默认是dist/static/js/Vue CLI 默认是dist/js/。文件名哈希像app.abc123.js中的abc123是构建工具为了缓存优化注入的文件内容哈希值。问题的核心在于浏览器根据index.html中script标签的src属性去请求资源而这个src是publicPath、输出路径和文件名拼接而成的。如果拼接后的路径不对请求就会落到错误的地方。2.3 第三步核对本地构建产物在部署之前先在本地进行生产环境构建检查构建产物的结构是否正常。运行构建命令例如npm run build或yarn build。打开生成的dist或类似文件夹。找到index.html文件用编辑器打开它。查看script和link标签的src和href属性。它们的路径是否符合你的预期是相对路径如./static/js/app.js还是绝对路径如/static/js/app.js同时确认dist目录下是否存在这些标签所指向的物理文件。例如script src/static/js/app.abc123.js就应该对应dist/static/js/app.abc123.js这个文件。如果本地dist目录里的index.html引用的资源路径和dist目录下的实际文件结构能对上但部署后却出现404或返回HTML那么问题几乎可以锁定在服务器配置或publicPath与部署环境不匹配上。3. 分场景解决方案与深度配置根据上述排查链路定位到问题大致方向后我们可以针对不同场景实施解决方案。3.1 场景一Vue/React/Webpack 项目部署到子路径这是最经典的场景。你的应用需要部署在https://company.com/project-name/而非根目录。解决方案正确配置publicPath(Webpack/Vue CLI) 或base(Vite)。Vue CLI (vue.config.js):// vue.config.js module.exports { publicPath: process.env.NODE_ENV production ? /your-sub-path/ // 生产环境子路径 : /, // 开发环境根路径 // ... 其他配置 }关键点publicPath的值必须以斜杠开头和结尾例如/project-name/。很多开发者漏了结尾的斜杠导致路径拼接错误。Vite (vite.config.js):// vite.config.js export default defineConfig({ base: /your-sub-path/, // 直接设置base // ... 其他配置 })Webpack (webpack.config.js):// webpack.config.js module.exports { output: { // ... 其他output配置 publicPath: /your-sub-path/, }, // ... 其他配置 };配置后验证重新执行npm run build检查dist/index.html中的资源引用是否都加上了/your-sub-path/前缀。然后用一个静态服务器如serve在本地模拟子路径访问看是否正常。注意仅仅配置构建工具是不够的。你还需要确保你的Web服务器如Nginx, Apache正确地将对子路径下静态资源的请求映射到正确的物理目录。例如Nginx需要正确配置location /your-sub-path/的alias或root指令。3.2 场景二服务器配置问题以Nginx为例即使前端构建配置正确服务器错误配置也会导致资源请求被错误处理返回index.html。问题根因在单页应用SPA中我们通常配置服务器将所有非静态文件的请求都重定向到index.html由前端路由处理即try_files或rewrite到index.html。但如果这个规则配置得过于宽泛或者静态资源路径匹配不正确就会导致对.js、.css文件的请求也被重定向到index.html。Nginx 正确配置示例server { listen 80; server_name your-domain.com; # 设置站点根目录假设你的dist文件夹内容放在 /usr/share/nginx/html/my-app root /usr/share/nginx/html/my-app; index index.html; location / { # 对于根路径下的请求先尝试找对应文件找不到则返回index.html支持前端路由 try_files $uri $uri/ /index.html; } # 特别重要的配置明确处理静态资源目录避免它们被上面的 location / 规则捕获 location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { # 静态资源设置更长的缓存时间 expires 1y; add_header Cache-Control public, immutable; # 这里不需要 try_files $uri /index.html因为我们要确保证资源文件被正确送达 try_files $uri 404; } }配置解析location /使用try_files它按顺序检查请求的文件 ($uri) - 请求的目录 ($uri/) - 最后回退到/index.html。这是SPA路由的标配。location ~* \.(js|css|...)$是一个正则匹配位置块专门处理静态资源。它只使用try_files $uri 404;意思是“只寻找完全匹配的文件找不到就返回404错误”。这确保了.js文件永远不会被错误地指向index.html。Apache (.htaccess) 配置要点 对于Apache同样需要区分静态资源和路由请求。常见的SPA配置是RewriteEngine On # 如果请求的不是一个真实存在的文件或目录 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 并且请求的路径也不是一个静态资源根据扩展名判断 RewriteCond %{REQUEST_URI} !\.(js|css|png|jpg|gif|ico|svg|woff|woff2|ttf|eot)$ [NC] # 则重写到 index.html RewriteRule ^ /index.html [L]这个规则的关键在于RewriteCond条件。它确保了只有非真实文件、非真实目录、且不是静态资源后缀的请求才会被重写到index.html。3.3 场景三History 路由模式与服务器回退当你使用 Vue Router 或 React Router 的history模式而不是hash模式时问题会变得更加典型。因为history模式下的路由如/about是一个纯前端定义的路由路径服务器上并没有对应的/about/index.html文件。解决方案这就是为什么在场景二的Nginx配置中location /块里会有try_files $uri $uri/ /index.html;这一行。它的逻辑是“客户啊你要/about我先去磁盘上找有没有/about这个文件或文件夹没有的话我就把/index.html这个文件的内容给你。” 浏览器拿到index.html后前端路由库Vue Router会根据当前的URL/about来渲染对应的组件。因此对于history模式确保你的服务器正确配置了“回退到index.html”的规则是解决Unexpected token ‘‘错误的前提。同时必须确保这个回退规则不会拦截到真正的静态资源请求如.js文件这就是为什么需要像场景二那样用独立的location块来处理静态资源。3.4 场景四开发环境下的热更新与代理问题在本地开发时你也有可能遇到这个错误尤其是在使用vue-cli-service serve或vite启动开发服务器并且配置了复杂的代理规则时。常见原因代理配置错误在vue.config.js或vite.config.js中你配置了代理将某些API请求转发到后端服务器。但如果代理规则写错了可能会错误地将对本开发服务器静态资源的请求如localhost:8080/static/js/app.js也代理到了后端而后端返回了一个HTML页面或错误响应。浏览器缓存有时浏览器会顽固地缓存一个之前出错状态下的index.html或错误的.js文件。即使服务器已经修复浏览器仍使用旧缓存。解决方案检查代理配置仔细核对devServer.proxyWebpack/Vue CLI或server.proxyVite的配置。确保context匹配路径不会意外匹配到你的静态资源路径。通常静态资源由开发服务器自身处理不应被代理。// vue.config.js - 错误的代理配置示例过于宽泛 module.exports { devServer: { proxy: { /api: { // 只代理以 /api 开头的请求 target: http://backend:3000, changeOrigin: true, } // 注意没有配置 / 或其他可能匹配静态资源的路径 } } }清除浏览器缓存在开发者工具的 Network 面板中勾选 “Disable cache”禁用缓存然后硬刷新CtrlF5 或 CmdShiftR。重启开发服务器有时开发服务器的中间件状态异常重启一下CtrlC 然后再次npm run serve能解决很多诡异问题。4. 进阶排查构建工具链中的隐秘角落如果以上常见场景都排查无误问题可能出在构建工具链的更深处。这些情况相对少见但一旦遇到非常棘手。4.1 Webpack 的output.publicPath运行时动态性在复杂的微前端或动态模块加载场景中publicPath可能需要根据运行时环境动态确定。Webpack 提供了__webpack_public_path__这个全局变量。问题如果你在入口文件顶部设置了__webpack_public_path__ window.appConfig.assetPath;但在该变量被正确赋值之前就有其他模块开始加载依赖比如通过import()动态导入那么这些依赖的请求路径就会基于一个未定义或错误的publicPath从而导致404或加载到HTML。解决方案确保__webpack_public_path__的赋值发生在所有可能触发动态导入的代码之前。最好放在入口文件的最顶端。考虑使用 Webpack 的output.publicPath: autoWebpack 5它会自动根据import.meta.url、document.currentScript等推断出相对路径在大部分情况下比手动管理更可靠。4.2 第三方库或插件对资源路径的硬编码一些第三方库特别是那些涉及加载外部资源如图片、字体、Worker脚本的库可能会在内部硬编码资源路径。排查方法在构建产物的.js文件中搜索http://、https://或/static/等绝对路径字符串。检查你是否正确配置了诸如vue-cli的chainWebpack来修改url-loader或file-loader的publicPath。对于 CSS 中的url()资源它们的路径处理是独立的。// vue.config.js module.exports { chainWebpack: config { config.module.rule(images) .use(url-loader) .tap(options { // 修改图片资源的publicPath options.publicPath process.env.VUE_APP_CDN_URL ? ${process.env.VUE_APP_CDN_URL}/ : ./; return options; }); } }4.3 使用 CDN 时资源上传与引用不一致当你将静态资源上传到 CDN如阿里云 OSS、AWS S3并在publicPath中配置了 CDN 域名时需要确保上传路径与构建路径一致如果你构建的dist/static/js/app.js上传到了 CDN 的https://cdn.example.com/static/js/app.js那么publicPath就应该是https://cdn.example.com/。如果你上传到了https://cdn.example.com/my-project/static/js/app.js那么publicPath就应该是https://cdn.example.com/my-project/。CDN 缓存与回源首次访问时CDN 节点上没有资源会回源到你的服务器获取。如果此时你的服务器配置错误如场景二返回了index.html给 CDN那么 CDN 就会把这个 HTML 缓存起来后续所有用户访问这个.js文件都会得到缓存的 HTML导致大规模报错。务必在部署后先手动或通过脚本检查 CDN 上关键.js文件的内容是否正确。5. 实战调试技巧与工具运用工欲善其事必先利其器。掌握一些调试技巧能让你在解决问题的过程中事半功倍。5.1 利用 Source Map 精准定位构建后的代码经过压缩、混淆错误栈很难读。启用 Source Map 可以让浏览器控制台将错误映射回你原始的、未构建的源代码位置。Vue CLI / Webpack在生产环境构建时可以通过配置生成 Source Map但通常不建议将其部署到线上因为会暴露源码。可以将其用于预发布环境的调试。// vue.config.js module.exports { productionSourceMap: true, // 生产环境生成source map // 或者更精细的控制 configureWebpack: { devtool: process.env.NODE_ENV production ? source-map : eval-cheap-module-source-map, } }在浏览器中调试部署了 Source Map 后在开发者工具的 Sources 面板中你可以看到webpack://目录里面是你的原始源代码文件可以直接打断点调试。5.2 构建分析工具使用构建分析工具如webpack-bundle-analyzer可以可视化地查看打包后每个模块的大小和依赖关系。虽然它不直接解决路径问题但可以帮助你确认输出的文件是否如你预期文件名、路径。是否有意外的、巨大的依赖被包含进来这有时会间接影响资源加载行为。5.3 环境变量与多环境配置一个健壮的项目应该区分开发、测试、生产等环境。路径问题常常源于环境配置的混淆。使用.env文件// .env.development VUE_APP_PUBLIC_PATH/ // .env.production VUE_APP_PUBLIC_PATH/my-app/ // .env.staging VUE_APP_PUBLIC_PATHhttps://staging-cdn.example.com/在配置中引用// vue.config.js module.exports { publicPath: process.env.VUE_APP_PUBLIC_PATH || /, }这样通过运行vue-cli-service build --mode staging就能构建出对应环境的版本从根本上避免手动修改配置带来的错误。5.4 一个完整的诊断清单当你束手无策时可以按这个清单从头到尾过一遍[ ]本地构建运行npm run build检查dist/index.html中的资源引用路径是否正确dist文件夹内是否存在这些资源文件[ ]本地预览在dist目录下运行一个静态服务器如npx serve dist在浏览器中打开控制台是否有错误[ ]服务器路径确认项目部署在服务器的绝对路径。通过SSH登录ls -la查看。[ ]服务器配置逐行检查 Nginx/Apache 配置文件。重点关注root、alias、location匹配规则和try_files/rewrite指令。可以使用nginx -t测试配置语法。[ ]网络请求在出错的页面打开浏览器开发者工具 Network 面板确认有问题的.js文件的请求 URL 和服务器返回的实际内容是 JS 还是 HTML。[ ]缓存问题在 Network 面板勾选 “Disable cache”并执行硬刷新。清理 CDN 缓存如果有。[ ]环境变量检查构建和运行时使用的环境变量是否正确。特别是publicPath相关的变量。[ ]路由模式如果使用history模式确认服务器已配置对所有非静态资源请求回退到index.html。这个错误就像前端开发中的一个“经典谜题”表象单一但背后原因多样。从最表层的网络请求查看到深层的构建配置和服务器逻辑需要你像侦探一样层层推理。掌握本文所述的这套排查方法论你就能在面对任何由资源路径引发的Unexpected token ‘‘错误时做到心中有数手到病除。

相关新闻

使用DiskGenius从RAW/U盘未初始化状态恢复数据的完整指南

使用DiskGenius从RAW/U盘未初始化状态恢复数据的完整指南

1. 从一次数据危机说起:当U盘变成“RAW”或“未初始化” 上周,我的一位做摄影的朋友火急火燎地找到我,说他的一个存满了近期拍摄素材的U盘,插到电脑上突然不认了。系统提示“需要格式化”才能使用,容量显示为0字节&…

2026/10/17 7:42:27 阅读更多 →
暗黑2存档修改终极指南:零基础用d2s-editor十分钟打造毕业角色

暗黑2存档修改终极指南:零基础用d2s-editor十分钟打造毕业角色

暗黑2存档修改终极指南:零基础用d2s-editor十分钟打造毕业角色 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor d2s-editor 是一款完全免费、纯网页运行的暗黑破坏神2存档编辑器,同时兼容原版 D2 与重制版…

2026/10/17 7:42:35 阅读更多 →
推测性解码与自适应计算:大模型推理性能优化与成本降低实践

推测性解码与自适应计算:大模型推理性能优化与成本降低实践

在实际的深度学习模型部署和推理优化场景中,性能与成本是两大核心考量。模型推理速度慢、资源占用高会直接影响用户体验和运营成本。Perplexity AI 作为一家知名的 AI 搜索和问答服务提供商,其背后必然依赖着复杂的模型推理服务。近期,其通过…

2026/10/17 7:43:06 阅读更多 →

最新新闻

Windows下CUDA 12与cuDNN 8.9.4.25环境搭建与验证实录

Windows下CUDA 12与cuDNN 8.9.4.25环境搭建与验证实录

简介:本资源为NVIDIA官方发布的cuDNN深度神经网络加速库Windows版压缩包,版本8.9.4.25,专为CUDA 12环境设计,面向在Windows平台搭建深度学习训练与推理环境的开发者、研究人员及学生。包内共31个文件,以14个lib静态库、…

2026/10/19 3:58:27 阅读更多 →
AD域环境搭建全流程指南:从域控部署到组策略实战

AD域环境搭建全流程指南:从域控部署到组策略实战

如果你之前在“工作组”模式下管过几台电脑,再跑去搭一套AD域环境,第一感觉往往是:步骤不算多,但每一步都藏着坑。这个“AD域作业”看起来就是一个典型的域环境搭建任务——从域控部署、DNS配置到客户端加域、组策略下发&#xff…

2026/10/19 3:58:27 阅读更多 →
Rollout Correction 数学拆解:从蒙特卡洛回收到 GAE 与重要性采样

Rollout Correction 数学拆解:从蒙特卡洛回收到 GAE 与重要性采样

做强化学习或者在线决策优化的朋友,看到“Rollout Correction Math”这个标题,第一反应大概率是两条线:一条是蒙特卡洛树搜索里模拟 rollout 之后的回传修正,另一条是离策略评估里对行为策略产生的轨迹做偏差校正。这两条线表面上…

2026/10/19 3:58:27 阅读更多 →
拆解科技CEO专访:从提问艺术到产品逻辑的完整笔记

拆解科技CEO专访:从提问艺术到产品逻辑的完整笔记

最近某科技博主和某全球科技巨头CEO的那场对话,在各大平台传得沸沸扬扬,身边不少朋友都转给我看。我把完整视频看了一遍,又去翻了他过往几年的视频档案和这家公司历年的发布会内容,最大的感受是:这是一场值得反复回看的…

2026/10/19 3:58:27 阅读更多 →
多步预测误差累积怎么办?Rollout修正数学实战指南

多步预测误差累积怎么办?Rollout修正数学实战指南

这些年做预测类系统,我绕不开的一个词就是 rollout。无论是强化学习里的策略推演,还是多步时序预测、仿真滚动规划,只要涉及“用模型自己的输出继续喂给模型”,就一定会遇到误差累积的问题。而怎么把这些越滚越偏的结果拉回来&…

2026/10/19 3:58:27 阅读更多 →
开源代码审查CLI工具:本地LLM+Git Diff结构化分析

开源代码审查CLI工具:本地LLM+Git Diff结构化分析

1. 项目概述:一个真正能落地的开源代码审查 CLI 工具到底长什么样?“open-code-review”这个名字乍一听像某个 GitHub 上刚建的空仓库,或者某篇论文里没落地的概念。但如果你最近在团队里被 PR 堆得喘不过气,又不想再靠人工逐行盯…

2026/10/19 3:57:27 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →