You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nest+Serverless部署报错ENOENT:找不到src/clone目录求助

问题解决:Serverless部署后空文件夹缺失导致「No such file or directory」错误

问题描述

项目结构如下:

src 
     ---- Clone(空文件夹)
     ---- app.module.ts
     ---- app.service.ts

Serverless配置片段:

functions:
  main:
    timeout: 60
    handler: src/main.handler
    events:
    - schedule: cron(40 22 ? * MON *)

该服务定时触发S3存储桶,将CSV文件推送到GitHub,克隆目标为src/clone文件夹。本地运行正常,但部署后出现「No such file or directory」错误,解压Serverless打包文件后发现clone文件夹不存在。

原因分析

Serverless Framework默认打包时会忽略空文件夹,同时Git默认也不追踪空文件夹(除非文件夹内有文件),导致空的src/Clone目录未被包含进部署包,运行时自然找不到该目录。

解决方案

1. 给空文件夹添加.gitkeep文件

在src/Clone目录下创建一个空的.gitkeep文件,让Git追踪该文件夹,Serverless打包时就会将其包含进去:

touch src/Clone/.gitkeep

2. 配置Serverless强制包含目标目录

在serverless.yml中添加package配置项,明确指定要包含src/Clone目录:

package:
  include:
    - src/Clone/**

此配置会强制打包工具将该目录加入部署包,即使它是空的。

3. 运行时动态创建目录

在代码执行Git克隆操作前,先检查目标目录是否存在,不存在则自动创建(以Node.js为例):

const fs = require('fs');
const path = require('path');

const cloneDirPath = path.join(__dirname, 'Clone');
if (!fs.existsSync(cloneDirPath)) {
  // recursive: true 确保父目录不存在时也能创建
  fs.mkdirSync(cloneDirPath, { recursive: true });
}

// 后续执行Git克隆逻辑

这种方式不依赖打包时的目录存在,运行时自动生成,适配性更强。

内容的提问来源于stack exchange,提问作者JaNith RathNayaka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 14:55:21