webpack - 如何使用 webpack 导入 .graphql 文件

标签 webpack graphql

尝试导入此文件:

subscription onNewNotification {
    notification {
        id
        content
        seen
    }
}

运行 babel-node 编译整个过程时出现此错误:SyntaxError: .../graphql/NotificationSubscription.graphql: Unexpected token, expected ;
这是我的 webpack 加载器的样子:
module: {
        loaders: [
            {
                test: /\.js?$/,
                include: [
                    path.join(__dirname, 'client'),
                    path.join(__dirname, 'server/shared'),
                ],
                exclude: /node_modules/,
                loader: 'babel-loader',
                query: {
                    presets: ['react-hmre'],
                },
            },
            {
                test: /\.json?$/,
                loader: 'json-loader',
            },
            {
                test: /\.scss$/,
                loaders: ['style-loader', 'css-loader', 'sass-loader'],
            },
            { test: /\.css$/, loader: 'style-loader!css-loader' },

            { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?mimetype=image/svg+xml' },
            {
                test: /\.(graphql|gql)$/,
                exclude: /node_modules/,
                loader: 'graphql-tag/loader',
            },
        ],


    },

不知道为什么会发生这种情况,我正在关注 Apollo 文档,但我在谷歌上没有看到任何关于此的信息:http://dev.apollodata.com/react/webpack.html

最佳答案

嗯,我也有同样的问题。在与 apollo slack channel 上的家伙交谈后,我们开始调试并发现问题所在。我们发现问题出在 'babel-register' 以某种方式试图编译 .graphql文件,即使规则要忽略。所以你可以走两条路:

  • 更容易做到:
    您可以创建一个 js 文件来保存查询并使用 react-apollo 上的 gql 函数创建它们,而不是创建一个 graphql 文件。打包并导出为变量。
  • 更复杂:
    如果你使用 webpack,你可以创建一个配置,将你所有的服务器代码编译成一个包,并使用 node(没有 babel-node 或 babel-register)运行包,就像在 GitHunt-React 示例( https://github.com/apollographql/GitHunt-React )中一样。它不像第一个那么简单,但更优雅。
  • 关于webpack - 如何使用 webpack 导入 .graphql 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44092376/

    相关文章:

    coffeescript - 如何设置 webpack 像 CodeKit 一样缩小并组合 scss 和 javascript?

    javascript - 执行 bundle 时使用各自子包的模块

    enums - Graphql Codegen - 带有自定义键=>值的枚举

    graphql - GraphQL 中的标量类型是什么

    Azure DevOps - 如何在部署期间使用 webpack 构建 bundle

    angular - 是否有任何官方文档指定 ~ (代字号)解析为 node_modules/in Angular scss 导入路径?

    reactjs - 为中继自动生成 graphql 模式( Graphite 烯服务器)

    refactoring - GraphQL 中的多个 rootQuery 对象

    amazon-web-services - FriendsList 的 AWS AppSync 用户关系

    webpack 中的 Angular Material 主题