我有这个目录树:
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的目录。