在节点中编译 TypeScript 后从相对路径读取/写入文件

Joh*_*ohn 7 node.js typescript

我有以下文件夹结构:

/
  /src/
    file.ts
    one.txt
  /resources/
    two.txt
Run Code Online (Sandbox Code Playgroud)

我想通过执行以下操作来file.ts阅读one.txt和的内容:two.txt

/
  /src/
    file.ts
    one.txt
  /resources/
    two.txt
Run Code Online (Sandbox Code Playgroud)

使用时一切正常ts-node

问题是,当我运行时,tsc它将所有文件编译为(我已通过设置为告诉/dist编译器执行此操作),但两者都失败,因为文件未复制到,因此找不到文件。tsconfig.jsonoutDir./distfs.readFileSync(...)*.txt/distfs

现在,我的问题是:有没有一种漂亮的方法来处理这个问题,并使读取和写入在使用时和之后fs都按预期工作?ts-nodetsc

我已经在几个项目中通过做一些奇怪的事情来解决这个问题,例如:

import fs from 'fs';
import path from 'path';

// sync is bad.
fs.readFileSync('one.txt');
fs.readFileSync(path.resolve(__dirname, '../resources/file.txt'));
Run Code Online (Sandbox Code Playgroud)

但这似乎是错误的。我相信应该有更好的解决方案,但我找不到。

小智 -1

dir =  path.basename(path.dirname(__dirname));
const certDir = (dir === 'dist' ? './dist/cert': '../cert');
console.log('Cert file', certDir, `${certDir}/server-key.pem`);
console.log('Key file', certDir, `${certDir}/server-key.pem`);
Run Code Online (Sandbox Code Playgroud)