Я пытаюсь интегрировать Nextjs с graphql-tag / loader, это мой файл next.config.js:
const withSass = require('@zeit/next-sass')
const graphqlLoader = require('graphql-tag/loader')
module.exports = withSass({
webpack: (config, { buildId, dev, isServer, defaultLoaders }) => {
config.module.rules.push({
test: /\.(graphql|gql)$/,
loader: graphqlLoader,
exclude: /node_modules/
})
return config
}
})
Я не могу построить, я получаю следующее сообщение об ошибке:
/HOME/node_modules/graphql-tag/loader.js:43
this.cacheable();
^
TypeError: Cannot read property 'cacheable' of undefined
Пожалуйста помоги.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я заставил его работать в своей настройке следующим образом. Не уверен, что не так в вашем коде, но вы можете попробовать и посмотреть, работает ли он :) Для этого вы можете использовать следующий плагин js. Может быть, порядок плагинов имеет значение. Вот мой конфиг. Есть дополнительный код, но я уверен, что вы получите то, что вам нужно. Что касается версии библиотек «next»: «6.1.1», «next-optimized-images»: «1.4.1», «next-plugin-graphql»: «^ 0.0.1»,
const withSass = require("@zeit/next-sass");
const webpack = require("webpack");
const withGraphQL = require("next-plugin-graphql");
const withOptimizedImages = require("next-optimized-images");
module.exports = withOptimizedImages(
withGraphQL(
withSass({
cssModules: true,
cssLoaderOptions: {
importLoaders: 1,
localIdentName: "[local]___[hash:base64:5]"
},
webpack: config => {
config.plugins.push(
new webpack.ContextReplacementPlugin(
/graphql-language-service-interface[\/]dist$/,
new RegExp(`^\\./.*\\.js$`)
)
);
return config;
}
})
)
);
Если вы предпочитаете просто модифицировать свой код и не устанавливать плагины, вы можете вдохновиться этим следующий-graphql-плагин. Плагин работает для меня, отличие от вашей настройки в том, что у них настроено правило следующим образом
config.module.rules.push({
test: /\.(graphql|gql)$/,
include: [dir],
exclude: /node_modules/,
use: [
{
loader: 'graphql-tag/loader'
}
]
})
Спасибо, подробнее посмотрю на плагин next-graphql-plugin.
Я попытался добавить правило, когда
isServer === true, и когдаisServer === falseвсе еще не может быть собран, с той же ошибкой.