有没有一种方法可以创建一个模块,该模块可以读取使用该模块的目录? (TypeScript / JavaScript)

时间:2020-02-16 23:59:12

标签: javascript typescript

我正在尝试做一个处理程序,该处理程序将读取它所在的文件夹。但是,此处理程序是一个模块,将导入到多个文件夹中。

例如,如果给定当前目录:

->Main
   ->folder a
      ->languages
   a.js
   ->folder b
      ->languages
   b.js
   ->folder c
      ->languages
   c.js
d.js

d.js-a.js,b.js和c.js中使用的处理程序

var Translate = ((lang) => {
  // this line below is what I want to know how to do. 
  import { lang } from "./languages/"+lang;

  // do stuff with lang
}

export { Translate }

使用d.js处理程序,应该可以在a.js / b.js / c.js中使用它。但是我想知道如何读取导入目录而不是从处理程序中导入的目录(在本例中为language文件夹)。我这样做是为了为一个应用程序处理多种语言,而且我认为这种方式易于管理。

1 个答案:

答案 0 :(得分:0)

如果在NodeJS环境中执行代码,则可以使用它来获取当前目录名称:

import path from "path";
const dirName = path.basename(path.dirname(filename));

dirName变量将包含文件夹名称作为字符串。 然后,您可以使用ES6模板文字来动态导入。

import { lang } from `./languages/${dirname}`