【问题标题】:Why don't save me file in dist directory in TS为什么不将我的文件保存在 TS 的 dist 目录中
【发布时间】:2021-02-23 11:41:55
【问题描述】:

我创建了一个文件,我使用 exceljs 库将其保存在我的 ./src/report/files/ 中,如下所示:

workBook.xlsx.writeFile(`./src/report/files/${fileName}.xlsx`);

所以,我的文件以物理方式保存在上述目录中,

但是当我尝试通过这个路径下载这个文件时:

const filePath = path.join(__dirname, 'files', `${fileName}.xlsx`);

(这个路径是:/.../c/.../.../.../.../.../dist/report/files/SomeFileName.xlsx

我收到这样的错误:

Error: ENOENT: no such file or directory, open '/.../c/.../.../.../.../.../dist/report/files/SomeFileName.xlsx'

所以我查看了我的dist 文件夹,发现report 中没有我的files 文件夹,有人可以告诉我为什么以及如何将文件保存到此目录并正确下载我的文件?

感谢您的帮助

ps。我正在使用 NestJS 和 Typescript

【问题讨论】:

  • 三个点?我从未见过这种语法。船长?
  • 我编辑是亲自将其隐藏在SO中

标签: javascript typescript express nestjs


【解决方案1】:

Typescript 会将您的 .ts 文件转换为 .js 并将它们移动到指定的 outDir(通常为 dist/),但它不会移动除 .js.json 之外的其他文件类型。如果您想移动它们,您可以编写一个使用命令行的postbuild 脚​​本(类似于mv ./src/**/*.xslx ./dist),但可能更好/更稳定的是在其中创建一个files 目录您的项目根目录,而不是使用 path.join(__dirname, 'files', '${filename}.xlsx') 使用 path.join(process.cwd(), 'files', '${filename}.xlsx')

【讨论】:

  • 但是,当我在远程服务器上部署我的项目时,process.cwd() 会正常工作吗?我的意思是,这会从远程服务器正确下载我的文件?
  • process.cwd() 指的是启动进程的目录。 大多数情况下,这是你的项目根目录,所以它应该可以正常工作
  • 使用__dirname 在大多数情况下比process.cwd() 更可靠
  • 但对于未通过编译器/捆绑程序移动的文件则不然。这就是为什么我建议使用process.cwd() 并为 xlsx 文件使用项目根目录
  • 所以,总而言之,要下载文件,我必须使用process.cwd(),而我必须通过process.cwd() 下载的所有文件都必须在src/here 中?
猜你喜欢
  • 1970-01-01
  • 2023-03-23
  • 2012-10-11
  • 2015-05-17
  • 1970-01-01
  • 2019-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多