реагирует на jsconfig. json игнорирует пути - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть jsconfig.json в root моего приложения реагирования:

{
    "compilerOptions": {
      "baseUrl": "./src",
      "paths": {
        "rmv": ["components/rmv/*"]
      }
    }
  }

, и в папке ./src/components/rmv находится файл helper.jsx.

Но мои попытки экспортировать его напрямую так: import Helper from 'rmv/helper' терпит неудачу с ошибкой:

Failed to compile
Module not found: Can't resolve 'rmv/helper' 

Работает только import Helper from 'components/rmv/helper'. Почему? PS: я тоже пробовал:

"paths": {
        "rmv/*": ["components/rmv/*"]
      }

тоже не работает.

Вот минимальный воспроизводимый пример: github.com/chapkovski/trouble_with_jsconfig

В частности эти строки: https://github.com/chapkovski/trouble_with_jsconfig/blob/e37c8c216eac0da7c70023f7fba47eea54973176/src/App.js#L4 -L5

Ответы [ 3 ]

1 голос
/ 22 февраля 2020

[Eject CRA] Вы можете использовать псевдоним webpack в качестве альтернативного решения для варианта использования.

В webpack.config.js

module.exports = {
  //...
  resolve: {
    alias: {
      rmv: path.resolve(__dirname, 'src/components/rmv/')
    }
  }
};

Теперь вы можете импортировать вспомогательный компонент, как показано ниже:

import Helper from 'rmv/helper';
1 голос
/ 25 февраля 2020

Пути в настоящее время недоступны в приложениях, созданных с create-react-app:

https://github.com/facebook/create-react-app/issues/5645

Вы можете рассмотреть возможность использования rescripts чтобы вы могли изменить свою конфигурацию в приложениях CRA 2+.

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

Пути должны быть относительно baseUrl. Ваш baseUrl имеет значение ./src, что хорошо. Тем не менее, ваши пути, перечисленные в массиве для rmv/*, НЕ являются относительными путями, поскольку они не начинаются с относительного местоположения (./ или ../).

Я бы рекомендовал вам попробовать префикс ./ на ваши пути.

{
  "compilerOptions": {
    "baseUrl": "./src",
    "paths": {
      "rmv/*": ["./components/rmv/*"]
    }
  }
}

Я нашел эту документацию по теме: Использование псевдонимов веб-пакета

...