Node.js + Webpack + TypeScript: доступ к пути проекта с исходными файлами (не использование проекта) - PullRequest
0 голосов
/ 11 января 2019

Давайте еще раз поясним: мне не нужно process.cwd в этом вопросе, мне нужно доступ к абсолютному пути исходного проекта. Например:

  • Исходный код: C:\Users\user1\projects\lib1\src\library.ts (становится для Node Module в будущем)
  • Проект, который использует библиотеку: C:\Users\user1\projects\someProject\src\someProject.ts

Итак, мне нужно получить C:\Users\user1\projects\lib1\src внутри library.ts.

Я пытался:

webpack.config.js

module.exports = {

  // ...

  target: 'node',
  externals: [nodeExternals()],

  plugins: [
    new Webpack.DefinePlugin({
      __PROJECT_ROUTE_ABSOLUTE_PATH__: __dirname
    })
  ]
};

проект-types.d.ts

declare var __PROJECT_ROUTE_ABSOLUTE_PATH__: string;

Если попробовать console.log(__PROJECT_ROUTE_ABSOLUTE_PATH__) в library.ts, ниже недопустимый JavaScript будет произведено:

console.log(C:\Users\user1\projects\lib1);

Путь правильный, но цитаты отсутствуют. Я не знаю, как это объяснить. Но в любом случае, как мы можем найти правильный путь?

Существует также странное явление: если вызвать __dirname, просто будет возвращено /, поэтому path.resolve(__dirname, 'fileName') gives C: \ fileName `

enter image description here

1 Ответ

0 голосов
/ 11 января 2019

Вы можете напрямую использовать встроенный модуль node.js path. Модуль path предоставляет утилиты для работы с путями файлов и каталогов. Доступ к нему можно получить с помощью:

const path = require('path');

__ filename - это имя файла текущего модуля. Это разрешенный абсолютный путь к текущему файлу модуля. (например: /home/user/some/dir/file.js)

__dirname - имя каталога текущего модуля. (Например: / Главная / пользователь / некоторые / реж)

fs.readFile(path.resolve(__dirname + 'fileName'))

Это разрешит путь к файлу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...