AWS Lambda文件路径咨询:./html/product.html对应的html文件夹存放位置
问题1:路径中.的具体指代位置
你代码中readFile("./html/product.html")里的.,默认指代Lambda函数运行时的工作目录,也就是你上传的函数部署zip包解压后的根目录(Lambda执行环境中对应路径为/var/task)。
注意:这个工作目录和你当前编写代码的js文件所在目录不一定一致,是相对Node进程启动的目录来计算的,这也是这类路径问题高发的原因。
问题2:html文件夹的正确存放位置
要匹配你当前写的./html/product.html路径,html文件夹需要最终出现在部署zip包的根目录下,对应你本地的项目结构分两种常见场景:
- 如果你打包部署包时,是直接将
src文件夹内的所有文件输出到zip根目录(也就是你的入口js文件解压后直接在/var/task下):请把html文件夹放在src文件夹内部,打包后html就会自动出现在部署包根目录 - 如果你打包部署包时,是将整个项目目录(包含
src文件夹、package.json等)直接打包,也就是入口js文件解压后在/var/task/src/下:请把html文件夹放在和src同级的位置,打包后html就会出现在部署包根目录
避坑优化建议
如果要避免工作目录变动导致的路径报错,推荐用__dirname拼接绝对路径,修改代码如下:
const path = require('path'); // 此时路径是相对于当前js文件所在目录计算,不受工作目录影响 const htmlPath = path.join(__dirname, './html/product.html'); readFile(htmlPath, 你的后续逻辑);
用这种写法的话,你直接把html文件夹和写这段代码的js文件放在同级目录即可,不需要考虑打包规则的差异。
内容的提问来源于stack exchange,提问作者Jim Jones
相关产品推荐
相关产品推荐

