Webpack импортирует все файлы и экспортирует их как массив - PullRequest
0 голосов
/ 17 марта 2019

Так что я работаю с Graphql и прошивал схему, и мой индексный файл выглядит ужасно длинным. Для небольшого примера:

import userSchema from "./user";
import hobbiesSchema from "./hobbies";
import jobSchema from "./job";
import petSchema from "./pet";


const linkSchema = gql`
  scalar Date

  type Query {
    _: Boolean
  }
  type Mutation {
    _: Boolean
  }
  type Subscription {
    _: Boolean
  }
`;

export default [
  linkSchema,
  userSchema,
  petSchema,
  jobSchema,
  hobbiesSchema,
];

Это будет невероятно долго, если я планирую добавить еще 20 схем! Я хотел бы добавить все файлы в каталог и затем экспортировать их. Так что я видел много случаев, когда один и тот же ответ делал это:

const context = require.context('.', true, /^\.\/(?!index\.js).*\.js$/, 'sync');

let schemas = {};
context.keys().forEach(module => {
  schemas[module] = context(module);
});

Итак, я попытался поместить это в массив и экспортировать его как массив всех моих схем, выдвигая каждый модуль в массиве и экспортируя его внизу. Я думал, что это будет работать, но это не так, и мне интересно, почему? Я получаю сообщение об ошибке.

Мои схемы определены и экспортированы в виде

export default gql`
  //schema stuff
`

Я попытался сделать то же самое отдельно для резольверов, потому что индексный файл выглядит почти точно так же, как индексный файл схемы, и я получаю сообщение об ошибке "[Ошибка:" default ", определенная в резольверах, но не в схеме]"

1 Ответ

0 голосов
/ 17 марта 2019

Очевидно, все, что мне нужно было сделать, это добавить .default в контекст (модуль)!

const context = require.context('.', true, /^\.\/(?!index\.js).*\.js$/, 'sync');
let resolvers = [];

context.keys().forEach(module => {
  resolvers.push(context(module).default)
});

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