Я экспериментирую с GatsbyJS. Я создал новый сайт, основанный на их генераторе сайтов по умолчанию, и внес некоторые изменения. При использовании команды gatsby develop все работает как положено. Я пошел использовать gatsby build, и он создает папку /public, однако нет ни «index.html», ни даже «bundle.js».
Является ли сайт по умолчанию «особенным» в том смысле, что он не будет создавать сайт обычным способом? Нужен ли другой параметр в версии gatsby-config для создания index.html?
ls каталога /public возвращает:
1-5cf9b126c8aa029e3c76.js
1-5cf9b126c8aa029e3c76.js.map
1-f2577b7d9227c6ab20bd.js
1-f2577b7d9227c6ab20bd.js.map
404
app-dc0da5ea76a79bd92e99.js
app-dc0da5ea76a79bd92e99.js.map
app-e2d084d7f150c4a0d4f4.js
app-e2d084d7f150c4a0d4f4.js.map
chunk-map.json
component---node-modules-gatsby-plugin-offline-app-shell-js-896a3f852b233b9ca05e.js
component---node-modules-gatsby-plugin-offline-app-shell-js-896a3f852b233b9ca05e.js.map
component---src-pages-404-js-8e1643e05587f89c70d6.js
component---src-pages-404-js-8e1643e05587f89c70d6.js.map
component---src-pages-404-js-c2122e5847e5d16ffe11.js
component---src-pages-404-js-c2122e5847e5d16ffe11.js.map
component---src-pages-index-js-be99ef46e818d68362b3.js
component---src-pages-index-js-be99ef46e818d68362b3.js.map
component---src-pages-index-js-edad0a6dd0d36ec7cdbd.js
component---src-pages-index-js-edad0a6dd0d36ec7cdbd.js.map
component---src-pages-page-2-js-0479e3779ff85cb5431c.js
component---src-pages-page-2-js-0479e3779ff85cb5431c.js.map
component---src-pages-page-2-js-a49a481686ec152c45b7.js
component---src-pages-page-2-js-a49a481686ec152c45b7.js.map
icons
manifest.webmanifest
offline-plugin-app-shell-fallback
pages-manifest-5c619b10fb87f94c2d85.js
pages-manifest-5c619b10fb87f94c2d85.js.map
pages-manifest-e84c50768dd42edc85fe.js
pages-manifest-e84c50768dd42edc85fe.js.map
render-page.js
render-page.js.map
static
styles-0375cdcc38b87565858c.js
styles-0375cdcc38b87565858c.js.map
styles-b76dfad3fcff2976e17c.js
styles-b76dfad3fcff2976e17c.js.map
styles.fc4fa5e094d218207796.css
webpack-runtime-50855368c384639cab1f.js
webpack-runtime-50855368c384639cab1f.js.map
webpack-runtime-66b8792cf68b5ba07ac4.js
webpack-runtime-66b8792cf68b5ba07ac4.js.map
webpack.stats.json
Для справки:
$ gatsby -v
2.5.5
И package.json:
{
"name": "gatsby-starter-default",
"private": true,
"description": "A simple starter to get up and developing quickly with Gatsby",
"version": "0.1.0",
"author": "Kyle Mathews <[email protected]>",
"dependencies": {
"gatsby": "^2.3.5",
"gatsby-image": "^2.0.37",
"gatsby-plugin-manifest": "^2.0.26",
"gatsby-plugin-offline": "^2.0.25",
"gatsby-plugin-react-helmet": "^3.0.11",
"gatsby-plugin-sharp": "^2.0.32",
"gatsby-source-filesystem": "^2.0.28",
"gatsby-transformer-sharp": "^2.1.17",
"prop-types": "^15.7.2",
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-helmet": "^5.2.0"
},
"devDependencies": {
"prettier": "^1.16.4"
},
"keywords": [
"gatsby"
],
"license": "MIT",
"scripts": {
"build": "gatsby build",
"develop": "gatsby develop",
"format": "prettier --write src/**/*.{js,jsx}",
"start": "npm run develop",
"serve": "gatsby serve",
"test": "echo \"Write tests! -> https://gatsby.dev/unit-testing\""
},
"repository": {
"type": "git",
"url": "https://github.com/gatsbyjs/gatsby-starter-default"
},
"bugs": {
"url": "https://github.com/gatsbyjs/gatsby/issues"
}
}
gatsby new site и я сделал несколько новых компонентов, чтобы заменить стандартный
Я бы попробовал удалить папку node_modules и попробовать npm install снова. Кроме того, вы можете опубликовать свой файл packages.json?
Я добавил package.json. Переустановка файлов узла не дала результата...
Запуск gatsby develop создал новый index.html, но это странно.
Ах, я нашел это. Была допущена ошибка. По какой-то причине вы можете нормально вызывать «fetch» в режиме develop, но его нужно импортировать во время работы build
Красиво, рада, что нашла!



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


Как отмечалось в комментариях выше, проблема заключалась в том, что gatsby develop и gatsby build, казалось, имели разные требования. При работе с командой bulld команду fetch es6 необходимо импортировать вручную (бу).
Это просто означало добавление строки
import 'isomorphic-fetch';
Всем файлам, вызывающим fetch.
рад, что вы разобрались, gatsby build генерировать страницы в среде узла, что означает, что у него нет доступа к объекту window только для браузера. Это включает в себя такие вещи, как fetch, location, document... и т. д. Если вы хотели использовать fetch только в браузере, вы должны проверить window как if (typeof window !== 'undefined'); в противном случае вам придется вручную импортировать пакет (как вы узнали).
Как вы его создавали и какие изменения?