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

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

问题描述

博主在学习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则会避免这个问题,直接找到这个资源的绝对路径。

参考资料

相关文章
2022 如何删除GitHub上的代码仓库(详细图解过程 对英文初学者友好)
这篇文章提供了一个对英文初学者友好的删除GitHub代码仓库的详细图解过程,但实际内容似乎与标题不符,主要是介绍了如何在GitHub上创建代码仓库的步骤,包括注册账号、创建新仓库、填写仓库信息、设置仓库可见性以及添加README文件等,并提供了相关操作的引用链接。
2022 如何删除GitHub上的代码仓库(详细图解过程 对英文初学者友好)
|
数据采集 存储 监控
组建数据治理团队:从无到有的实践指南
通过以上四个步骤,可以从无到有地建立和完善一个高效的数据治理团队。这个团队将帮助企业更好地管理和利用自己的数据资产,从而为企业创造更大的价值。
|
SQL 缓存 Java
Hive 之 UDF 运用(包会的)
Hive的UDF允许用户自定义数据处理函数,扩展其功能。`reflect()`函数通过Java反射调用JDK中的方法,如静态或实例方法。例如,调用`MathUtils.addNumbers()`进行加法运算。要创建自定义UDF,可以继承`GenericUDF`,实现`initialize`、`evaluate`和`getDisplayString`方法。在`initialize`中检查参数类型,在`evaluate`中执行业务逻辑。最后,打包项目成JAR,上传到HDFS,并在Hive中注册以供使用。
765 2
|
存储 移动开发 C语言
技术心得记录:嵌入式开发中常用到的C语言库函数
技术心得记录:嵌入式开发中常用到的C语言库函数
223 1
|
存储 SQL 监控
MySQL数据库,从入门到精通:第十七篇——MySQL 触发器的使用方法及注意事项
MySQL数据库,从入门到精通:第十七篇——MySQL 触发器的使用方法及注意事项
573 0
|
XML 前端开发 JavaScript
Nginx 静态压缩和代码压缩实战,大大提高网站访问速度!
Nginx 静态压缩和代码压缩实战,大大提高网站访问速度!
|
Java Android开发 开发者
《阿里巴巴Android开发手册》电子版地址
本手册以开发者为中心视角分为Java语言规范,Android资源文件命名与使用,Android基本组件,UI与布局等九大部分。
1287 0
《阿里巴巴Android开发手册》电子版地址
|
机器学习/深度学习 人工智能 运维
图解Python编程:从入门到精通系列教程(附全套速查表)
Python 是一门开源免费、通用型的脚本编程语言,它上手简单,功能强大,它也是互联网最热门的编程语言之一。这套Python基础教程不同于其他文字版教程,我们以最直挂的「图示」对每个内容和关键点「可视化」,配以最精准精简的代码,让大家尽快入门。
540 0
图解Python编程:从入门到精通系列教程(附全套速查表)
|
MySQL Linux PHP
LNMP(Linux+Nginx+PHP+MySQL)生产源码部署实战
日常工作中,部署Nginx+PHP是非常普通的一个场景,如果有一个最佳实践,每次可以直接复制粘贴就好了。本文正是完全生产实践的方式。Nginx和PHP均推荐使用源码安装,MySQL推荐直接使用官方提供编译好的二进制文件,性能是最佳的,除非你可以非常专业的进行MySQL编译的定制。
1546 0
LNMP(Linux+Nginx+PHP+MySQL)生产源码部署实战