Vite Error only in build (TypeError: Cannot read property 'insertBefore' of null)
Vite Error only in build (TypeError: Cannot read property 'insertBefore' of null)
我用 Vue3 和 TailwindCss 创建了一个 Vite 前端。
使用 npm run serve
启动应用程序:一切正常,没有任何警告或错误。
但是在使用 npm run build
部署后,我在过滤或 selecting arrays/objects 的项目时遇到 TypeError: Cannot read property 'insertBefore' of null
错误。
Link 到包含所有代码的回购: Github Repo
这里是一个link部署的应用程序:Deployed Application
重现步骤:
- 拉取Github回购
- 从
npm run serve
开始,看看它应该如何工作。或者将 npm run build
之后的 dist
目录部署到任何网络服务器,如 nginx 以获取错误。
- 在浏览器
localhost:3000
或网络服务器 URL 或我部署的 link. 中打开
- 通过用户名登录
John.Doe@mail.com
- 密码:test123
- 导航至
/apartments
或使用左侧的导航栏 Wohnungen
。
- 错误 1:Select 列表中的一间公寓,然后再次单击它以取消select它。 -> 现在没有公寓可以再 selected 并且错误出现在控制台中。需要重新加载才能使其再次工作。 (从一间公寓切换到另一间公寓工作正常。仅当取消select当前select编辑的公寓时才会发生错误)
- 错误 2:如果在同一页面顶部的搜索输入中输入某些内容,公寓将得到相应过滤(例如输入
Rund
),如果删除搜索输入,所有公寓将再次出现。但是,如果您 select 过滤列表中的一间公寓并删除搜索输入,您会收到错误消息,并且列表不会更新。
代码参考:
所有描述的功能都发生在:Appartment View
- selecting/deselecting:
- 函数:
selectWohnung()
(Line 273)
- 组件:
ApartmentListItemComponent
(ListObject)ApartmentDetailComponent
(DetailObjectView)
- 数据:
apartments
(所有公寓列表),filteredApartments
(所有公寓的过滤列表),selectedApartment
(当前selected公寓)
- 过滤:
- 函数:
search()
(Line 329)
- 组件:
ApartmentListItemComponent
(ListObject)
- 数据:
apartments
(所有公寓列表),filteredApartments
(所有公寓的过滤列表),searchString
(搜索输入)
我的thoughts/tries:
- 我不知道它如何在
serve
中正常工作,但在 build
之后它会抛出错误...
- 我觉得跟
v-if
有点关系。例如。我从:<aside v-if="selectedApartment !== undefined">[...]
切换到 <aside v-show="selectedApartment !== undefined">[...]
以修复 select 公寓错误。但我不认为我用这个变通办法解决了主要问题 -> Reverted in Repo.
- 在移动设备上 none 发生错误。所以也许它必须对组件的可见性做些什么?
希望这些信息够用,不要太乱。我想保持代码与部署时完全一样。我不知道如何修复此错误或此错误的来源。提前致谢。
附加信息:
- 节点版本:14.17.3
- npm 版本:7.19.1
- 浏览器:Chrome 版本 91.0.4472.124
- 部署 .htaccess
问题通过更新到 vue 版本 3.1.5
.
自行解决
我用 Vue3 和 TailwindCss 创建了一个 Vite 前端。
使用 npm run serve
启动应用程序:一切正常,没有任何警告或错误。
但是在使用 npm run build
部署后,我在过滤或 selecting arrays/objects 的项目时遇到 TypeError: Cannot read property 'insertBefore' of null
错误。
Link 到包含所有代码的回购: Github Repo
这里是一个link部署的应用程序:Deployed Application
重现步骤:
- 拉取Github回购
- 从
npm run serve
开始,看看它应该如何工作。或者将npm run build
之后的dist
目录部署到任何网络服务器,如 nginx 以获取错误。 - 在浏览器
localhost:3000
或网络服务器 URL 或我部署的 link. 中打开
- 通过用户名登录
John.Doe@mail.com
- 密码:test123
- 导航至
/apartments
或使用左侧的导航栏Wohnungen
。 - 错误 1:Select 列表中的一间公寓,然后再次单击它以取消select它。 -> 现在没有公寓可以再 selected 并且错误出现在控制台中。需要重新加载才能使其再次工作。 (从一间公寓切换到另一间公寓工作正常。仅当取消select当前select编辑的公寓时才会发生错误)
- 错误 2:如果在同一页面顶部的搜索输入中输入某些内容,公寓将得到相应过滤(例如输入
Rund
),如果删除搜索输入,所有公寓将再次出现。但是,如果您 select 过滤列表中的一间公寓并删除搜索输入,您会收到错误消息,并且列表不会更新。
代码参考:
所有描述的功能都发生在:Appartment View
- selecting/deselecting:
- 函数:
selectWohnung()
(Line 273) - 组件:
ApartmentListItemComponent
(ListObject)ApartmentDetailComponent
(DetailObjectView) - 数据:
apartments
(所有公寓列表),filteredApartments
(所有公寓的过滤列表),selectedApartment
(当前selected公寓)
- 函数:
- 过滤:
- 函数:
search()
(Line 329) - 组件:
ApartmentListItemComponent
(ListObject) - 数据:
apartments
(所有公寓列表),filteredApartments
(所有公寓的过滤列表),searchString
(搜索输入)
- 函数:
我的thoughts/tries:
- 我不知道它如何在
serve
中正常工作,但在build
之后它会抛出错误... - 我觉得跟
v-if
有点关系。例如。我从:<aside v-if="selectedApartment !== undefined">[...]
切换到<aside v-show="selectedApartment !== undefined">[...]
以修复 select 公寓错误。但我不认为我用这个变通办法解决了主要问题 -> Reverted in Repo. - 在移动设备上 none 发生错误。所以也许它必须对组件的可见性做些什么?
希望这些信息够用,不要太乱。我想保持代码与部署时完全一样。我不知道如何修复此错误或此错误的来源。提前致谢。
附加信息:
- 节点版本:14.17.3
- npm 版本:7.19.1
- 浏览器:Chrome 版本 91.0.4472.124
- 部署 .htaccess
问题通过更新到 vue 版本 3.1.5
.