因缺少绝对路径引发的部署血案

简介: 因缺少绝对路径引发的部署血案

问题描述

博主在学习Next应用的时候,使用express作为后台,部署在本地一切正常,但是部署在字节的轻服务上便出现如下错误。

image.png

解决过程

尝试1:尝试是否是跨域问题

刚开始遇到这个错误,我判断可能是跨域问题,后来经排查不是,因为如果是跨域问题,自定义的路由不可能被访问成功,但是我通过postman访问自定义路由是能够成功的,说明不是跨域的问题,而且我已经配置了下面的语句。

app.use(cors());  // 解决跨域
复制代码

尝试2:修改静态资源的路径

因为只有静态资源无法访问,说明可能是配置静态资源的中间件出来问题,所以我刚开始在网上找到了这样的一个解决方案,即下面的语句。

app.use(express.static(path.join(__dirname, 'build', 'public')));
复制代码

上面的解决也是无效,后来我咨询了字节轻服务的相关工程师,原来是因为path.join会拼接字符串,但是我的路径中并没有build这个文件夹,所以报错,我原本还以为这两个文件夹是并列关系,原来是拼接关系。

尝试3:修改为绝对路径(最终解决方案)

在字节轻服务工程师的帮助下,我才用了绝对路径的方式来公开静态资源,这一次成功了~

感谢字节轻服务的工程师。

app.use(express.static(path.join(__dirname, 'public')));
复制代码

问题原因

在express公开静态资源的时候,如果不加入绝对路径,会按照云平台中的node执行的位置去找,自然会出现找不到的情况,自然会出现404的错误,但是我们如果加上了绝对路径dirname则会避免这个问题,直接找到这个资源的绝对路径。

参考资料

相关文章
|
存储 iOS开发 Windows
利用Dism修复系统步骤,以及dism找不到源文件解决方案
利用Dism修复系统步骤,以及dism找不到源文件解决方案
4393 0
利用Dism修复系统步骤,以及dism找不到源文件解决方案
|
14天前
|
弹性计算 运维 Shell
|
14天前
|
JavaScript
用户安装nodejs设置路径打包项目
用户安装nodejs设置路径打包项目
46 1
|
14天前
|
C++
[C++] 获取工程路径、解决方案路径和.exe路径
[C++] 获取工程路径、解决方案路径和.exe路径
55 1
|
10月前
|
人工智能 数据建模 索引
so 文件查看依赖项目 和 依赖库搜索路径
so 文件查看依赖项目 和 依赖库搜索路径
360 0
C#(三十六)之文件夹、路径、环境特殊目录类
本篇内容记录了文件类操作、文件夹操作、Directory类方法、Path类方法和字段、Environment获取电脑的相关属性方法。
202 0
C#(三十六)之文件夹、路径、环境特殊目录类
|
JavaScript 中间件
因缺少绝对路径引发的部署血案
博主在学习Next应用的时候,使用express作为后台,部署在本地一切正常,但是部署在字节的轻服务上便出现如下错误。
382 0
因缺少绝对路径引发的部署血案

热门文章

最新文章