【问题标题】:Webpack importing all files and exporting it as an arrayWebpack导入所有文件并将其导出为数组
【发布时间】:2019-03-18 04:59:19
【问题描述】:

所以我正在使用 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
`

我尝试为解析器单独做同样的事情,因为索引文件看起来与架构索引文件几乎完全相同,并且我收到错误“[错误:在解析器中定义的“默认”,但不是在架构中]”

【问题讨论】:

    标签: node.js webpack graphql


    【解决方案1】:

    显然,我所要做的就是将 .default 添加到上下文(模块)!

    const context = require.context('.', true, /^\.\/(?!index\.js).*\.js$/, 'sync');
    let resolvers = [];
    
    context.keys().forEach(module => {
      resolvers.push(context(module).default)
    });
    
    export default resolvers
    

    【讨论】:

      猜你喜欢
      • 2020-02-23
      • 2020-08-09
      • 1970-01-01
      • 2017-06-03
      • 2017-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      相关资源
      最近更新 更多