uni-app URIError: Failed to decode param '/%3C%=%20BASE_URL%20%%3Estatic/index.css'

发布于 1周前 作者 songsunli 来自 Uni-App

uni-app URIError: Failed to decode param ‘/%3C%=%20BASE_URL%20%%3Estatic/index.css’

编译正常没问题,只是一运行就出现如下错误,之前还是好的昨天莫名其名的就出现了这么一个问题代码啥的都没有动过

URIError: Failed to decode param ‘/%3C%=%20BASE_URL%20%%3Estatic/index.css’
at decodeURIComponent (<anonymous>)
at decode_param (D:\HBuilderX\plugins\uniapp-cli\node_modules\express\lib\router\layer.js:172:12)
at Layer.match (D:\HBuilderX\plugins\uniapp-cli\node_modules\express\lib\router\layer.js:123:27)
at matchLayer (D:\HBuilderX\plugins\uniapp-cli\node_modules\express\lib\router\index.js:574:18)
at next (D:\HBuilderX\plugins\uniapp-cli\node_modules\express\lib\router\index.js:220:15)
at expressInit (D:\HBuilderX\plugins\uniapp-cli\node_modules\express\lib\middleware\init.js:40:5)
at Layer.handle [as handle_request] (D:\HBuilderX\plugins\uniapp-cli\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (D:\HBuilderX\plugins\uniapp-cli\node_modules\express\lib\router\index.js:317:13)
at D:\HBuilderX\plugins\uniapp-cli\node_modules\express\lib\router\index.js:284:7
at Function.process_params (D:\HBuilderX\plugins\uniapp-cli\node_modules\express\lib\router\index.js:335:12)
at next (D:\HBuilderX\plugins\uniapp-cli\node_modules\express\lib\router\index.js:275:10)
at query (D:\HBuilderX\plugins\uniapp-cli\node_modules\express\lib\middleware\query.js:45:5)
at Layer.handle [as handle_request] (D:\HBuilderX\plugins\uniapp-cli\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (D:\HBuilderX\plugins\uniapp-cli\node_modules\express\lib\router\index.js:317:13)
at D:\HBuilderX\plugins\uniapp-cli\node_modules\express\lib\router\index.js:284:7
at Function.process_params (D:\HBuilderX\plugins\uniapp-cli\node_modules\express\lib\router\index.js:335:12)


5 回复

已经解决了,具体问题是其实本来访问地址是这样的http://localhost:8080/h5/,如果我访问通过http://localhost:8080访问就会报错,这是系统级别上的一个问题,希望后续能够把这个优化一下


怎么解决的啊

回复 5***@qq.com: 访问的时候通过http://localhost:8080/h5/

赞!!!

在处理 uni-app 中的 URIError: Failed to decode param 错误时,通常意味着 URI 编码或解码过程中出现了问题。在你的例子中,URI /%3C%=%20BASE_URL%20%%3Estatic/index.css 试图解码一个包含非法字符或格式不正确的编码字符串。这里的 %3C%=%20BASE_URL%20%%3E 看起来像是尝试使用某种模板字符串(可能是服务器端模板引擎的语法)直接在 URL 中,但没有被正确处理或替换。

uni-app 中,通常我们会使用 process.env 或在配置文件中定义全局变量来处理基础 URL(BASE_URL)等配置。这里的问题可能是由于静态资源路径被错误地设置或拼接。

以下是一个如何正确设置和使用静态资源路径的示例,以及如何在 uni-app 中配置环境变量的方法,以避免此类 URI 解码错误:

  1. 配置环境变量: 在 manifest.json 中,可以定义全局变量,例如 BASE_URL。但通常,环境变量是通过 .env 文件或在构建脚本中设置的。

    // .env.development
    VUE_APP_BASE_URL=/path/to/your/static/files/
    
  2. 在代码中引用环境变量: 使用 process.env 访问环境变量,并确保在构建静态资源路径时使用正确的变量。

    // 在 Vue 组件或 JS 文件中
    const baseUrl = process.env.VUE_APP_BASE_URL;
    const cssPath = `${baseUrl}static/index.css`;
    
    // 动态加载 CSS 文件(示例)
    const link = document.createElement('link');
    link.rel = 'stylesheet';
    link.href = cssPath;
    document.head.appendChild(link);
    
  3. 确保静态资源路径正确: 在构建配置中,确保静态资源的路径被正确处理。在 uni-app 中,通常静态资源放在 static 文件夹下,路径会自动处理。

  4. 避免直接在 URL 中使用模板语法: 如你的错误所示,直接在 URL 中使用如 %3C%=%20BASE_URL%20%%3E 这样的编码字符串是不正确的。应确保所有变量在构建 URL 之前已被正确解析和替换。

通过上述方法,你可以避免在 uni-app 中遇到类似的 URI 解码错误,并确保静态资源路径的正确性和动态性。

回到顶部