Gatsby 插件 Gatsby-Source-Wordpress 出错
Error with Gatsby plugin Gatsby-Source-Wordpress
我正在尝试设置我的第一个 gatsby + wordpress 网站。我正在学习 this 教程。
我得到了站点 运行ning,但是在我应该从 WP 获取数据的时候我卡住了。我添加了 Gatsby-Source-Wordpress 插件。在我重新启动网站后,它抛出了这个错误:
success open and validate gatsby-configs - 0.102 s
success load plugins - 0.631 s
success onPreInit - 0.019 s
success initialize cache - 0.053 s
success copy gatsby files - 0.161 s
success onPreBootstrap - 0.040 s
info Creating GraphQL type definition for File
Path: /wp-json
The server response was "404 Not Found"
ERROR #11321 PLUGIN
"gatsby-source-wordpress" threw an error while running the sourceNodes lifecycle:
Cannot read property 'data' of undefined
TypeError: Cannot read property 'data' of undefined
- fetch.js:141 fetch
[gatsby-wordpress]/[gatsby-source-wordpress]/fetch.js:141:21
- next_tick.js:68 process._tickCallback
internal/process/next_tick.js:68:7
warn The gatsby-source-wordpress plugin has generated no Gatsby nodes. Do you need it?
success source and transform nodes - 0.327 s
success building schema - 0.404 s
success createPages - 0.019 s
success createPagesStatefully - 0.090 s
success onPreExtractQueries - 0.022 s
success update schema - 0.079 s
success extract queries from components - 0.595 s
success write out requires - 0.103 s
success write out redirect data - 0.032 s
success Build manifest and related icons - 0.263 s
success onPostBootstrap - 0.308 s
⠀
info bootstrap finished - 6.617 s
⠀
success run static queries - 0.105 s — 3/3 36.11 queries/second
success run page queries - 0.044 s — 5/5 230.97 queries/second
DONE Compiled successfully in 4851ms 10:46:42 AM
⠀
You can now view gatsby-starter-default in the browser.
⠀
http://localhost:8000/
⠀
View GraphiQL, an in-browser IDE, to explore your site's data and schema
⠀
http://localhost:8000/___graphql
⠀
Note that the development build is not optimized.
To create a production build, use npm run build
⠀
ℹ 「wdm」:
ℹ 「wdm」: Compiled successfully.
我 运行 使用 Mamp 在本地 WP,我可以在此处看到 JSON 数据:http://localhost:8888/GatsbyWP/wp-json/。
这是我的 gatsby-config.js 文件:
module.exports = {
siteMetadata: {
title: `Gatsby wordpress test`,
description: `Testing...`,
author: `@gatsbyjs`,
},
plugins: [
`gatsby-plugin-react-helmet`,
{
resolve: `gatsby-source-filesystem`,
options: {
name: `images`,
path: `${__dirname}/src/images`,
},
},
`gatsby-transformer-sharp`,
`gatsby-plugin-sharp`,
{
resolve: `gatsby-plugin-manifest`,
options: {
name: `gatsby-starter-default`,
short_name: `starter`,
start_url: `/`,
background_color: `#663399`,
theme_color: `#663399`,
display: `minimal-ui`,
icon: `src/images/gatsby-icon.png`,
},
},
{
resolve: "gatsby-source-wordpress",
options: {
baseUrl: `localhost:8888`,
protocol: `http`,
hostingWPCOM: false,
useACF: true,
},
},
`gatsby-plugin-sitemap`,
],
}
我被卡住了,不知道现在该做什么。我发现其他人也有与此类似的问题,但没有找到任何好的答案或方向来尝试找出我的问题。
提前致谢!
gatsby-source-wordpress 的选项需要...
the base URL of the Wordpress site without the trailing slash and the protocol. This is required.
Example : 'gatsbyjsexamplewordpress.wordpress.com' or 'www.example-site.com'
module.exports = {
siteMetadata: {
title: `Gatsby wordpress test`,
description: `Testing...`,
author: `@gatsbyjs`,
},
plugins: [
{
resolve: "gatsby-source-wordpress",
options: {
baseUrl: `localhost:8888/GatsbyWP`,
protocol: `http`,
hostingWPCOM: false,
useACF: true,
},
},
],
}
当从像 Godaddy 这样的服务采购托管时 axios/node 客户可能会怀疑他们并拒绝 https crt,我已经看到这通过两种方式得到纠正
1) 添加第三方 go daddy crt 捆绑包,例如 https://ssl-ccp.godaddy.com/repository?origin=CALLISTO,如果您有自己的服务器,那很好。所以将其添加到 axios:
var agent = new https.Agent({
ca: fs.readFileSync('ca.pem')
});
axios.get(url, { agent: agent });
// 或
var instance = axios.create({ agent: agent });
instance.get(url);
或节点
export NODE_EXTRA_CA_CERTS=[your CA certificate file path]
2) 但是如果你在 Netlify 上或通过 gitlab 或其他方式托管怎么办,对我有用的是将我的 gatsby 配置协议更改为 http,这让我可以从我的网站很好,只要所有资产都是 https,即使我部署到我的 https 网站,它仍然有效。这让我难过了好几天,希望这对某人有帮助
{
resolve: `gatsby-source-wordpress`,
options: {
/*
* The base URL of the WordPress site without the trailingslash and the protocol. This is required.
* Example : 'dev-gatbsyjswp.pantheonsite.io' or 'www.example-site.com'
*/
baseUrl: `example.com`,
// The protocol. This can be http or https.
protocol: `http`,
// Indicates whether the site is hosted on wordpress.com.
// If false, then the assumption is made that the site is self hosted.
// If true, then the plugin will source its content on wordpress.com using the JSON REST API V2.
// If your site is hosted on wordpress.org, then set this to false.
hostingWPCOM: false,
您好,您需要确保查询了您引入的 post 类型,并且您还需要确保那里有要使用的数据,但您的配置应该如下所示。
{
resolve: `gatsby-source-wordpress`,
options: {
baseUrl: process.env.API_URL,
protocol: process.env.API_PROTOCOL,
hostingWPCOM: false,
useACF: true,
includedRoutes: [
"**/categories",
"**/posts",
"**/pages",
"**/media",
"**/tags",
"**/taxonomies",
"**/users",
"**/menus",
"**/portfolio",
"**/services",
"**/qualifications",
"**/gallery",
"**/logo",
"**/location",
],
},
},
如果以上所有推荐的解决方案都不能解决您的问题,这可能会对某人有所帮助。
- 可能是因为您使用的是更新版本的 gatsby,因此对 gatsby-source-wordpress 插件的工作方式进行了很小的改动
https://www.gatsbyjs.com/docs/how-to/sourcing-data/sourcing-from-wordpress/
这个网站很有帮助。也来看看吧。
我正在尝试设置我的第一个 gatsby + wordpress 网站。我正在学习 this 教程。
我得到了站点 运行ning,但是在我应该从 WP 获取数据的时候我卡住了。我添加了 Gatsby-Source-Wordpress 插件。在我重新启动网站后,它抛出了这个错误:
success open and validate gatsby-configs - 0.102 s
success load plugins - 0.631 s
success onPreInit - 0.019 s
success initialize cache - 0.053 s
success copy gatsby files - 0.161 s
success onPreBootstrap - 0.040 s
info Creating GraphQL type definition for File
Path: /wp-json
The server response was "404 Not Found"
ERROR #11321 PLUGIN
"gatsby-source-wordpress" threw an error while running the sourceNodes lifecycle:
Cannot read property 'data' of undefined
TypeError: Cannot read property 'data' of undefined
- fetch.js:141 fetch
[gatsby-wordpress]/[gatsby-source-wordpress]/fetch.js:141:21
- next_tick.js:68 process._tickCallback
internal/process/next_tick.js:68:7
warn The gatsby-source-wordpress plugin has generated no Gatsby nodes. Do you need it?
success source and transform nodes - 0.327 s
success building schema - 0.404 s
success createPages - 0.019 s
success createPagesStatefully - 0.090 s
success onPreExtractQueries - 0.022 s
success update schema - 0.079 s
success extract queries from components - 0.595 s
success write out requires - 0.103 s
success write out redirect data - 0.032 s
success Build manifest and related icons - 0.263 s
success onPostBootstrap - 0.308 s
⠀
info bootstrap finished - 6.617 s
⠀
success run static queries - 0.105 s — 3/3 36.11 queries/second
success run page queries - 0.044 s — 5/5 230.97 queries/second
DONE Compiled successfully in 4851ms 10:46:42 AM
⠀
You can now view gatsby-starter-default in the browser.
⠀
http://localhost:8000/
⠀
View GraphiQL, an in-browser IDE, to explore your site's data and schema
⠀
http://localhost:8000/___graphql
⠀
Note that the development build is not optimized.
To create a production build, use npm run build
⠀
ℹ 「wdm」:
ℹ 「wdm」: Compiled successfully.
我 运行 使用 Mamp 在本地 WP,我可以在此处看到 JSON 数据:http://localhost:8888/GatsbyWP/wp-json/。
这是我的 gatsby-config.js 文件:
module.exports = {
siteMetadata: {
title: `Gatsby wordpress test`,
description: `Testing...`,
author: `@gatsbyjs`,
},
plugins: [
`gatsby-plugin-react-helmet`,
{
resolve: `gatsby-source-filesystem`,
options: {
name: `images`,
path: `${__dirname}/src/images`,
},
},
`gatsby-transformer-sharp`,
`gatsby-plugin-sharp`,
{
resolve: `gatsby-plugin-manifest`,
options: {
name: `gatsby-starter-default`,
short_name: `starter`,
start_url: `/`,
background_color: `#663399`,
theme_color: `#663399`,
display: `minimal-ui`,
icon: `src/images/gatsby-icon.png`,
},
},
{
resolve: "gatsby-source-wordpress",
options: {
baseUrl: `localhost:8888`,
protocol: `http`,
hostingWPCOM: false,
useACF: true,
},
},
`gatsby-plugin-sitemap`,
],
}
我被卡住了,不知道现在该做什么。我发现其他人也有与此类似的问题,但没有找到任何好的答案或方向来尝试找出我的问题。
提前致谢!
gatsby-source-wordpress 的选项需要...
the base URL of the Wordpress site without the trailing slash and the protocol. This is required.
Example : 'gatsbyjsexamplewordpress.wordpress.com' or 'www.example-site.com'
module.exports = {
siteMetadata: {
title: `Gatsby wordpress test`,
description: `Testing...`,
author: `@gatsbyjs`,
},
plugins: [
{
resolve: "gatsby-source-wordpress",
options: {
baseUrl: `localhost:8888/GatsbyWP`,
protocol: `http`,
hostingWPCOM: false,
useACF: true,
},
},
],
}
当从像 Godaddy 这样的服务采购托管时 axios/node 客户可能会怀疑他们并拒绝 https crt,我已经看到这通过两种方式得到纠正
1) 添加第三方 go daddy crt 捆绑包,例如 https://ssl-ccp.godaddy.com/repository?origin=CALLISTO,如果您有自己的服务器,那很好。所以将其添加到 axios:
var agent = new https.Agent({
ca: fs.readFileSync('ca.pem')
});
axios.get(url, { agent: agent });
// 或
var instance = axios.create({ agent: agent });
instance.get(url);
或节点
export NODE_EXTRA_CA_CERTS=[your CA certificate file path]
2) 但是如果你在 Netlify 上或通过 gitlab 或其他方式托管怎么办,对我有用的是将我的 gatsby 配置协议更改为 http,这让我可以从我的网站很好,只要所有资产都是 https,即使我部署到我的 https 网站,它仍然有效。这让我难过了好几天,希望这对某人有帮助
{
resolve: `gatsby-source-wordpress`,
options: {
/*
* The base URL of the WordPress site without the trailingslash and the protocol. This is required.
* Example : 'dev-gatbsyjswp.pantheonsite.io' or 'www.example-site.com'
*/
baseUrl: `example.com`,
// The protocol. This can be http or https.
protocol: `http`,
// Indicates whether the site is hosted on wordpress.com.
// If false, then the assumption is made that the site is self hosted.
// If true, then the plugin will source its content on wordpress.com using the JSON REST API V2.
// If your site is hosted on wordpress.org, then set this to false.
hostingWPCOM: false,
您好,您需要确保查询了您引入的 post 类型,并且您还需要确保那里有要使用的数据,但您的配置应该如下所示。
{
resolve: `gatsby-source-wordpress`,
options: {
baseUrl: process.env.API_URL,
protocol: process.env.API_PROTOCOL,
hostingWPCOM: false,
useACF: true,
includedRoutes: [
"**/categories",
"**/posts",
"**/pages",
"**/media",
"**/tags",
"**/taxonomies",
"**/users",
"**/menus",
"**/portfolio",
"**/services",
"**/qualifications",
"**/gallery",
"**/logo",
"**/location",
],
},
},
如果以上所有推荐的解决方案都不能解决您的问题,这可能会对某人有所帮助。
- 可能是因为您使用的是更新版本的 gatsby,因此对 gatsby-source-wordpress 插件的工作方式进行了很小的改动
https://www.gatsbyjs.com/docs/how-to/sourcing-data/sourcing-from-wordpress/
这个网站很有帮助。也来看看吧。