Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Web 版更改 publicPath 导致构建失败 #6919

Closed
TechQuery opened this issue Jul 5, 2020 · 17 comments
Closed

Web 版更改 publicPath 导致构建失败 #6919

TechQuery opened this issue Jul 5, 2020 · 17 comments
Assignees
Labels
A-cli Area - CLI 相关 T-h5 Target - 编译到 H5 V-3 Version - 3.x

Comments

@TechQuery
Copy link

TechQuery commented Jul 5, 2020

相关平台

H5

复现仓库

https://mypoker.github.io/app-front/
浏览器版本: Chrome 83
使用框架: React

复现步骤

更改 config/index.js 的相应部分如下:

{
    "h5": {
        "publicPath": "."
    }
}

期望结果

形如 https://xxx.github.io/yyy/ 的部署地址正常运行

实际结果

  • npm run dev:h5 白屏并报错 Uncaught SyntaxError: Unexpected token '<'
  • npm run build:h5 白屏并报错 Uncaught (in promise) Error: Route not found

环境信息

Taro CLI 3.0.2 environment info:
  System:
    OS: Windows 10
  Binaries:
    Node: 12.18.1 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.4 - C:\Program Files (x86)\Yarn\bin\yarn.CMD
    npm: 6.14.5 - C:\Program Files\nodejs\npm.CMD
@liivk
Copy link

liivk commented Jul 6, 2020

我也遇到了同样的问题,在我研究了半天之后终于找到原因了。在编译成h5的时候本来默认的路由模式是hash,Taro3之后默认变成了browser(虽然文档上写的还是hash),所以会报Route not found。你手动把编译配置的h5.router.mode指定hash试试。

@BlankHrt
Copy link

BlankHrt commented Jul 6, 2020

我也遇到这个问题,改成hash还是不行 @liivk

@TechQuery
Copy link
Author

我也遇到这个问题,改成hash还是不行 @liivk

同不行……

@liivk
Copy link

liivk commented Jul 7, 2020

是什么报错,Route not found还是Unexpected token '<', @BlankHrt @TechQuery ,如果是Unexpected token '<'的话"publicPath"改成 "."试试

@SilentFlute
Copy link

我也遇到了这问题: Unexpected token '<'
publicPath: './'那么dev:h5的时候就报这个错
publicPath: '.'也是一样的
但部署的话把css js资源放根目录太乱了, 还是希望能和打包出来的index.html放一起
然后我h5是改了路由的, 毕竟/pages/index/index实在是太难看了, 我就改了:

    router: {
      mode: 'browser',
      customRoutes: {
        '/pages/index/index': '/',
        '/pages/about/index': '/about'
      }
    }

一开始以为是这个的问题, 但是删了之后依旧是不行, 只要是publicPath改成了./就会报错......

@FireFoxAhri
Copy link

同遇到,改了publicPath,报错Uncaught (in promise) Error: Route not found

@TechQuery
Copy link
Author

@liivk 症状看楼主帖

@xiao252
Copy link
Contributor

xiao252 commented Jul 20, 2020

我也遇到了同样的问题,在我研究了半天之后终于找到原因了。在编译成h5的时候本来默认的路由模式是hash,Taro3之后默认变成了browser(虽然文档上写的还是hash),所以会报Route not found。你手动把编译配置的h5.router.mode指定hash试试。

第一次运行t3项目就发现了,没想到这个问题还真是因为它😤

@ML-0613
Copy link

ML-0613 commented Jul 22, 2020

我也遇到这个问题,环境:react+sass+ts+taro-ui;
创建完项目后,直接打包提到服务器打开页面白屏控制台提示Error: Route not found;
有遇到并解决了的吗?

@Chen-jj Chen-jj added A-cli Area - CLI 相关 T-h5 Target - 编译到 H5 V-3 Version - 3.x labels Jul 30, 2020
@Chen-jj Chen-jj modified the milestones: 3.0.7, 3.0.8 Jul 30, 2020
@LOUSANPANG
Copy link

Taro3.x 这样确实会解决这个问题,用browser就会出现 Route not found

    router: {
      mode: 'hash',
      customRoutes: {
        '/pages/index/index': '/'
      }
    },

@Chen-jj Chen-jj assigned luckyadam and unassigned Chen-jj Aug 10, 2020
@luckyadam
Copy link
Member

相关平台

H5

复现仓库

https://mypoker.github.io/app-front/
浏览器版本: Chrome 83
使用框架: React

复现步骤

更改 config/index.js 的相应部分如下:

{
    "h5": {
        "publicPath": "."
    }
}

期望结果

形如 https://xxx.github.io/yyy/ 的部署地址正常运行

实际结果

  • npm run dev:h5 白屏并报错 Uncaught SyntaxError: Unexpected token '<'
  • npm run build:h5 白屏并报错 Uncaught (in promise) Error: Route not found

环境信息

Taro CLI 3.0.2 environment info:
  System:
    OS: Windows 10
  Binaries:
    Node: 12.18.1 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.4 - C:\Program Files (x86)\Yarn\bin\yarn.CMD
    npm: 6.14.5 - C:\Program Files\nodejs\npm.CMD

publicPath 不能配置为相对路径哈,要用绝对路径,不然静态资源地址都是错的

@luckyadam
Copy link
Member

Taro3.x 这样确实会解决这个问题,用browser就会出现 Route not found

    router: {
      mode: 'hash',
      customRoutes: {
        '/pages/index/index': '/'
      }
    },

我在 3.0.7 木有复现哦

@TechQuery
Copy link
Author

@luckyadam 默认值 publicPath: '/' 也是个相对路径,只不过是相对于根目录……

@luckyadam
Copy link
Member

@luckyadam 默认值 publicPath: '/' 也是个相对路径,只不过是相对于根目录……

绝对以 / 开头

@TechQuery
Copy link
Author

TechQuery commented Aug 10, 2020

@luckyadam 默认值 publicPath: '/' 也是个相对路径,只不过是相对于根目录……

绝对以 / 开头

/ 对于 URL 而言是相对路径,对本地文件系统是绝对路径,这里并不清晰。

而且最关键的是如何解决发布到子目录时,外置资源 URL 正确,一个多月都给不出一个明确的说法吗?

我用 Parcel 时,--public-url 默认也是 /,发布至子目录改成 . 即可,非常 make sense~

@luckyadam
Copy link
Member

luckyadam commented Aug 11, 2020

@luckyadam 默认值 publicPath: '/' 也是个相对路径,只不过是相对于根目录……

绝对以 / 开头

/ 对于 URL 而言是相对路径,对本地文件系统是绝对路径,这里并不清晰。

而且最关键的是如何解决发布到子目录时,外置资源 URL 正确,一个多月都给不出一个明确的说法吗?

我用 Parcel 时,--public-url 默认也是 /,发布至子目录改成 . 即可,非常 make sense~

配置 publicPath,线上域名/子目录/,建议学习一下 webpack 的 publicPath 如何进行线上配置

@Chen-jj Chen-jj closed this as completed Aug 19, 2020
@Chen-jj Chen-jj removed this from the 3.0.8 milestone Aug 19, 2020
@ZakaryCode ZakaryCode moved this to Done in H5 Apr 10, 2023
@ZakaryCode ZakaryCode added this to H5 Apr 10, 2023
@yanjiez
Copy link

yanjiez commented Dec 21, 2023

已经done了么?如何解决呢?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-cli Area - CLI 相关 T-h5 Target - 编译到 H5 V-3 Version - 3.x
Projects
Archived in project
Development

No branches or pull requests