更新:感谢@bebraw,解决方法是使用新的babel预设:
请注意,react-hot已被弃用,现在有一个等效的babel插件。 npmjs.com/package/babel-preset-react-hmre为您做好设置。
具体错误是:
Cannot define 'query' and multiple loaders in loaders list
This链接是遇到相同错误但有不同解决方案的人。
理想情况下,我可以运行这样的事情:
module:
{
loaders: [
{
test: /\.js$/,
loaders: ['react-hot', 'babel'],
exclude: /node_modules/,
include: path.join(__dirname, 'app'),
query: {
stage: 0,
plugins: ['./babelRelayPlugin']
}
},
我希望通过Babel传播的内容经过babelRelayPlugin
,这是一个js
文件,位于/
。
我的babelRelayPlugin.js
文件如下所示:
var babelRelayPlugin = require('babel-relay-plugin');
var introspectionQuery = require('graphql/utilities').introspectionQuery;
var request = require('sync-request');
var graphqlHubUrl = 'http://www.GraphQLHub.com/graphql';
var response = request('GET', graphqlHubUrl, {
qs: {
query: introspectionQuery
}
});
var schema = JSON.parse(response.body.toString('utf-8'));
module.exports = babelRelayPlugin(schema.data, {
abortOnError: true,
});
问题在于您无法使用多个加载器并且拥有query
。我认为解决方案位于"查询参数"使用?
内联,但我尝试了许多可能的解决方案,但无法使其工作。
答案 0 :(得分:0)
请注意,react-hot已被弃用,现在有一个等效的babel插件。 npmjs.com/package/babel-preset-react-hmre为您做好设置。
或者你可以像这样分割你的配置:
{
test: /\.js$/,
loaders: ['react-hot'],
exclude: /node_modules/,
include: path.join(__dirname, 'app')
},
{
test: /\.js$/,
loaders: [babel'],
exclude: /node_modules/,
include: path.join(__dirname, 'app'),
query: {
stage: 0,
plugins: ['./babelRelayPlugin']
}
}
请注意,从右到左,从下到上评估装载程序。因此订单。