我有这个目录树:

project
  |
  -> dir1
      |
      -> dir2
          |
          -> module.mjs

     server.mjs
     utils.mjs


我当前的工作目录是:

 project/


server.mjs的源代码

async function main(){
    var module = await import("./dir1/dir2/module.mjs");
}

main();


module.mjs的源代码

//this works!
import utils from "../../utils.mjs";

//this fails!
import utils from "./utils.mjs";


似乎module.mjs中的静态导入考虑点“。”。作为其自身的目录,而不是当前的工作目录。

如何设置当前目录以进行动态导入?实际的基本问题是:如何避免在动态模块中使用冗长的静态导入“ .. / .. / ........”。

例如,我希望在server.mjs中有这样的内容:

var module = await import("./dir1/dir2/module.mjs",{cwd:"project/"});


或者,在动态模块中,可以使用:

import utils from './utils.mjs'


代替:

import utils from '../../long dot dot/utils.mjs'

最佳答案

尝试process.cwd(),它将返回您从其运行nodejs的目录。

09-18 15:22