Javascript 使用Typescript在nodejs中读取文件

Javascript 使用Typescript在nodejs中读取文件,javascript,node.js,typescript,Javascript,Node.js,Typescript,我今天开始学打字,有个问题 以下是文件树(编译后): 距离 index.js src data.txt index.ts 下面是./src/index.ts: import { readFileSync } from 'fs'; let data = readFileSync('./data.txt'); console.log(data); 使用命令“tsc”编译后,它会创建./dist/index.js,文件data.txt绝对无法正确读取。 如何使之成为正确的道路 通常不应将数据放入s

我今天开始学打字,有个问题

以下是文件树(编译后):

距离
index.js
src
data.txt
index.ts

下面是./src/index.ts:

import { readFileSync } from 'fs';

let data = readFileSync('./data.txt');
console.log(data);
使用命令“tsc”编译后,它会创建./dist/index.js,文件data.txt绝对无法正确读取。
如何使之成为正确的道路

通常不应将数据放入
src
文件夹中。如果您确实想这样做,有几种方法:

  • 编译typescript时将
    data.txt
    复制到dist
  • 使用绝对路径,可以是
    path.join(uu dirname,“../src/data.txt”)
  • 由于您已经知道index.ts将被编译为dist,请直接使用
    “./src/data.txt”

  • 通常,您不应该将数据放入
    src
    文件夹中。如果您确实想这样做,有几种方法:

  • 编译typescript时将
    data.txt
    复制到dist
  • 使用绝对路径,可以是
    path.join(uu dirname,“../src/data.txt”)
  • 由于您已经知道index.ts将被编译为dist,请直接使用
    “./src/data.txt”

  • 您可以将文件编译到同一文件夹中。不要传递任何“outDir”:“DIRECTORY”在compiler options.data.txt中不应该在src中,因为它是一个资源,因为它只被编译的代码使用,所以将它移动到dist(因为您希望将该文件与您的代码一起分发),您的问题将得到解决。或者你创建第三个文件夹,比如
    res
    ,将文件移到那里,然后使用
    。/res/data.txt
    ,它会一直工作。@ChrisG这是一个很好的建议,我只是不想把这个可怜的家伙和另一个文件夹混淆。@ChrisG但是作为最终产品,我们只取出“dist”文件夹,对吗?第三个文件夹将是多余的。是否有任何工具可以像vue cli和webpack一样将“data.txt”移动到dist并保持路径正确?您可以将文件编译到同一文件夹中。不要传递任何“outDir”:“DIRECTORY”在compiler options.data.txt中不应该在src中,因为它是一个资源,因为它只被编译的代码使用,所以将它移动到dist(因为您希望将该文件与您的代码一起分发),您的问题将得到解决。或者你创建第三个文件夹,比如
    res
    ,将文件移到那里,然后使用
    。/res/data.txt
    ,它会一直工作。@ChrisG这是一个很好的建议,我只是不想把这个可怜的家伙和另一个文件夹混淆。@ChrisG但是作为最终产品,我们只取出“dist”文件夹,对吗?第三个文件夹将是多余的。是否有任何工具可以像vue cli和webpack一样将“data.txt”移动到dist并保持路径正确?是否有任何工具可以像vue cli和webpack一样将“data.txt”复制到dist并在编译时自动保持路径正确?我个人使用gulp。您可以在gulp中包含您的typescript过程。对于部署,您只需执行
    tsc
    并在部署平台上复制文件即可。例如,我们使用jenkins自动部署node.js进程。是否有任何工具可以在编译时将“data.txt”复制到dist并保持路径正确,就像vue cli和webpack一样?我个人使用gulp。您可以在gulp中包含您的typescript过程。对于部署,您只需执行
    tsc
    并在部署平台上复制文件即可。例如,我们使用jenkins自动部署node.js进程。