如何使用 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',
            },
        ],

    },

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

好吧

,我也遇到了同样的问题。在与阿波罗松弛频道上的家伙交谈后,我们开始调试并发现问题所在。我们发现问题出在"babel-register"上,它以某种方式试图编译.graphql文件,即使有忽略的规则。因此,您可以走两条路:

    1. 更容易做到:无需创建 graphql 文件,您只需创建一个 js 文件来保存查询,并使用包上的 gql 函数创建查询并将其导出为变量,而不是创建react-apollo查询。
    1. 更精致:如果你使用 webpack,你可以创建一个配置,将所有服务器代码编译在一个捆绑包中,并使用节点(没有 babel-node 或 babel-register(运行捆绑包,就像在 GitHunt-React 示例 (https://github.com/apollographql/GitHunt-React( 中一样。它不像第一个那么简单,但它更优雅。

我已经解决了内联导入图形ql-ast的问题

最新更新