Как установить текущий каталог для функции импорта ES6 Dynami c - PullRequest
2 голосов
/ 29 января 2020

У меня есть это дерево каталогов:

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

     server.mjs
     utils.mjs

Мой текущий рабочий каталог:

 project/

Исходный код сервера.m js

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

main();

Исходный код module.m js

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

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

Кажется, что stati c import в module.m js считает точку '.' как сам каталог, а не текущий рабочий каталог.

Как установить текущий каталог для динамического c импорта? И фактический базовый вопрос: Как избежать длинного '../../.......' stati c импорта в динамическом c модуле.

Например, я sh хочу иметь что-то подобное на сервере. M js:

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

Или в модуле Dynami c, который может использовать:

import utils from './utils.mjs'

вместо:

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

Ответы [ 2 ]

1 голос
/ 29 января 2020

Попробуйте process.cwd(), он возвращает каталог, из которого вы запускаете nodejs.

0 голосов
/ 17 февраля 2020

Кажется, что нет никакого способа сделать stati c import в динамическом c импортированном модуле с точкой ., ссылающейся на текущий рабочий каталог.

Итак обходной путь все еще использует dotdot-slashsla sh ...

Я отправил новый запрос в группу Node.js здесь: https://github.com/nodejs/node/issues/31822

...