这次在用sapper写前端的时候,又犯了一个非常低级的错误,导致了长时间的页面无法访问,并且提示500错误,这个错误原来也经常犯,屡犯不改就是最大的错误,这次专门写一个博文来加深记忆!!!!

首先声明:这是一个极其低端的错误,任何前端工程师都不应该犯如此低级的错误!

前提背景:我们在做分离前端的时候,必然会涉及到登录,很多功能都是在登录状态下才会显示,就比如自媒体中心投稿之后,在稿件标题旁显示编辑和删除按钮,这里就要进行一个小判断,判断是否本稿件的创建人和目前登录的这个账号的id一致,也就是判断是否是本人,然后再显示编辑按钮,或者还可以加一个判断,比如管理员账号也可以直接显示编辑按钮,这个时候我那个低级错误就出现了,我进行了判断。

代码如下:

<h1 class="catd-title h5">
            {topic.title}
            {#if user._id == topic.creator._id || user.isadmin}
              <a href="/topic/edit?id={topic._id}">编辑</a>
            {/if}
</h1>

大家可以不用管topic对象,topic对象中包含了所需的数据,这里大家发现错误没有?

我本地开发的时候一直是保持登录状态,所以所有页面都含有user变量,这个变量我是注入了所有页面和路由的,当我认为一切都开发完毕,并且都上线了有一段时间之后,某天我登录数据消失,才发现所有这样写的页面全部提示500错误!

这个确实是一个低级错误,因为你要判断user._id,首先你得有user对象,但是如果你未登录,则session中读取的user对象为NULL,所以自然所有页面都报错。

这个时候只需要小改一下即可,代码如下:

{#if user && (user._id == topic.topic.creator._id || user.isadmin)}
    <a href="/topic/edit?id={topic._id}">编辑</a>
{/if}

即首先得判断user对象是否存在!!!!!!!

这是一个如此低级的错误,我希望以后再也不要犯!