Запуск rm -rf .cache && rm -rf public && gatsby-build
отлично работает под 2.0.83. После обновления до 2.0.84 выдается ошибка, прерывающая сборку.
Единственное, что я беру, это пробег gatsby build
. После возврата к версии 2.0.83 проблема исчезнет.
Сборка должна завершиться успешно
Сборка завершается со следующей ошибкой:
success onPostBootstrap — 0.202 s
info bootstrap finished - 6.171 s
error Generating JavaScript bundles failed
Error: ./.cache/async-requires.js 8:11
Module parse failed: Unexpected token (8:11)
You may need an appropriate loader to handle this file type.
| exports.components = {
| "component---node-modules-gatsby-plugin-offline-app-shell-js": function componentNodeModulesGatsbyPluginOfflineAppShellJs() {
> return import("/Users/dereklindahl/Work/APP/node_modules/gatsby-plugin-offline/app-shell.js"
| /* webpackChunkName: "component---node-modules-gatsby-plugin-offline-app-shell-js" */
| );
@ ./.cache/production-app.js 18:0-45 21:23-36 26:23-36
npx gatsby info -- --clipboard
System:
OS: macOS High Sierra 10.13.6
CPU: (4) x64 Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
Shell: 5.4.2 - /usr/local/bin/zsh
Binaries:
Node: 10.14.0 - ~/.nodenv/versions/10.14.0/bin/node
Yarn: 1.12.3 - /usr/local/bin/yarn
npm: 6.4.1 - ~/.nodenv/versions/10.14.0/bin/npm
Languages:
Python: 2.7.10 - /usr/bin/python
Browsers:
Chrome: 71.0.3578.98
Firefox: 63.0.3
Safari: 12.0.2
npmPackages:
gatsby: 2.0.84 => 2.0.84
gatsby-image: ^2.0.25 => 2.0.25
gatsby-mdx: ^0.2.0 => 0.2.0
gatsby-plugin-canonical-urls: ^2.0.8 => 2.0.8
gatsby-plugin-google-analytics: ^2.0.8 => 2.0.8
gatsby-plugin-manifest: ^2.0.13 => 2.0.13
gatsby-plugin-netlify: ^2.0.6 => 2.0.6
gatsby-plugin-netlify-cache: ^1.0.0 => 1.0.0
gatsby-plugin-offline: ^2.0.21 => 2.0.21
gatsby-plugin-react-helmet: ^3.0.5 => 3.0.5
gatsby-plugin-sharp: ^2.0.17 => 2.0.17
gatsby-plugin-sitemap: ^2.0.4 => 2.0.4
gatsby-plugin-sri: ^1.0.4 => 1.0.4
gatsby-plugin-styled-components: ^3.0.4 => 3.0.4
gatsby-plugin-zopfli: ^1.0.2 => 1.0.2
gatsby-source-filesystem: ^2.0.12 => 2.0.12
gatsby-transformer-sharp: ^2.1.10 => 2.1.10
Я видел # 10038, который звучал знакомо, но моя конфигурация Webpack неинтересна:
// gatsby-node.js
exports.onCreateWebpackConfig = ({ actions }) => {
actions.setWebpackConfig({
module: {
rules: [
{
test: /\.ogv$/,
use: [
{
loader: require.resolve(`url-loader`),
options: { limit: 10000, name: 'static/[name]-[hash].[ext]' }
}
]
}
]
},
resolve: {
alias: {
'@': path.resolve(__dirname, 'src/components')
},
modules: [path.resolve(__dirname, 'src'), 'node_modules']
}
})
}
И комментирование этого блока не исправляет ошибку.
Если я заменю gatsby-plugin-offline
на gatsby-plugin-remove-serviceworker
, проблема останется, но с другим асинхронным импортом.
FWIW, я не замечаю разницы в содержании async-require.js
в сборках 2.0.83 или 2.0.84, и обновление gatsby-plugin-offline
имело никакого значения.
У меня возникла аналогичная ошибка после обновления с 2.0.62
до 2.0.91
.
В моем случае gatsby develop
работает нормально, но gatsby build
выдает ошибки либо на странице template.js
(если я включаю ее), либо на 404.js
(если я удаляю createPages
сниппет из gatsby-node
):
error Generating JavaScript bundles failed
Error: ./.cache/async-requires.js 8:11
Module parse failed: Unexpected token (8:11)
You may need an appropriate loader to handle this file type.
| exports.components = {
| "component---src-templates-template-js": function componentSrcTemplatesTemplateJs() {
> return import("/Users/michael/Sites/projects/gatsby-starter/src/templates/template.js"
| /* webpackChunkName: "component---src-templates-template-js" */ | );
@ ./.cache/production-app.js 18:0-45 21:23-36 26:23-36
или же
error Generating JavaScript bundles failed
Error: ./.cache/async-requires.js 8:11
Module parse failed: Unexpected token (8:11)
You may need an appropriate loader to handle this file type.
| exports.components = {
| "component---src-pages-404-js": function componentSrcPages404Js() {
> return import("/Users/michael/Sites/projects/gatsby-starter/src/pages/404.js"
| /* webpackChunkName: "component---src-pages-404-js" */
| );
@ ./.cache/production-app.js 18:0-45 21:23-36 26:23-36
Все работало нормально до обновления gatsby
. 🤷♂️
@dlindahl @ooloth
Не могли бы вы дать ссылку на минимальные репродукции этого?
Я получаю ту же ошибку, используя Gatsby v 2.0.55, где package-lock.json отключен в .npmrc. Сайт ежедневно строится из чистого рабочего пространства. Сегодня это сработало, на следующий - нет. Я предполагаю, что ошибка связана с какой-то временной зависимостью, которая изменилась.
та же проблема, когда я обновляю gatsby
с v2.0.91
до v2.0.93
( v2.0.92
) не существует
Привет, вмешиваюсь, чтобы сказать, что в настоящее время я также испытываю эту проблему, но изо всех сил пытаюсь создать для нее минимальное воспроизведение.
В настоящее время запуск npm update
в моем репозитории вызывает сбой сборки, но не для моего личного веб-сайта .
Я буду копаться, пока не найду причину, или пока кто-нибудь не выяснит это. Если я смогу полностью изолировать его, я отправлю его сюда.
Благодаря!
Тоже самое!
Я набрал npm update -g npm
чтобы получить версию npm 6.7.0, и у меня есть gatsby 2.0.98.
автономная версия плагина gatsby -> 2.0.21
Репозиторий с этой проблемой: вот и все .
Также вы можете перечислить установленные зависимости с помощью npm ls
и запустить node --version
?
Здесь тоже может оказаться полезным деление пополам. Я протестирую репо через несколько минут.
Хорошо, здесь такая же ошибка. Я разрежу это пополам.
Кажется, это происходит во всех версиях, так что, вероятно, это плагин или другая зависимость.
Будем тестировать дальше.
Думаю, я нашел причину. Предоставлю патч и пиар.
@omrllm (патч для gatsby 2.0.60)
patch-package
--- a/node_modules/gatsby/dist/internal-plugins/query-runner/pages-writer.js
+++ b/node_modules/gatsby/dist/internal-plugins/query-runner/pages-writer.js
@@ -86,9 +86,9 @@ const preferDefault = m => m && m.default || m
let asyncRequires = `// prefer default export if available
const preferDefault = m => m && m.default || m
\n`;
- asyncRequires += `exports.components = {\n${components.map(c => ` "${c.componentChunkName}": () => import("${(0, _path.joinPath)(c.component)}" /* webpackChunkName: "${c.componentChunkName}" */)`).join(`,\n`)}
+ asyncRequires += `exports.components = {\n${components.map(c => ` "${c.componentChunkName}": () => require("${(0, _path.joinPath)(c.component)}" /* webpackChunkName: "${c.componentChunkName}" */)`).join(`,\n`)}
}\n\n`;
- asyncRequires += `exports.data = () => import("${(0, _path.joinPath)(program.directory, `.cache`, `data.json`)}")\n\n`;
+ asyncRequires += `exports.data = () => require("${(0, _path.joinPath)(program.directory, `.cache`, `data.json`)}")\n\n`;
const writeAndMove = (file, data) => {
const destination = (0, _path.joinPath)(program.directory, `.cache`, file);
Изменив import
на require
он должен работать. Вероятно, просто отсутствует загрузчик, но зачем использовать здесь import
когда способ ESM просто создает проблемы, и смешивание exports
с import
никогда не является хорошей идеей.
+ [email protected]
+ [email protected]
+ [email protected]
+ [email protected]
+ [email protected]
+ [email protected]
added 9 packages from 3 contributors, removed 4 packages, updated 92 packages and audited 43569 packages in 200.269s
diff 23.cache/ .cache/
Only in 23.cache/: .sonarlint
Common subdirectories: 23.cache/__tests__ and .cache/__tests__
Common subdirectories: 23.cache/caches and .cache/caches
Common subdirectories: 23.cache/commonjs and .cache/commonjs
diff 23.cache/data.json .cache/data.json
1c1
< {"pages":[{"componentChunkName":"component---src-pages-index-js","jsonName":"index","path":"/"},{"componentChunkName":"component---src-pages-404-js","jsonName":"404-html-516","path":"/404.html"},{"componentChunkName":"component---src-pages-404-js","jsonName":"404-22d","path":"/404/"},{"componentChunkName":"component---src-pages-about-js","jsonName":"about-f34","path":"/about/"},{"componentChunkName":"component---src-pages-contact-js","jsonName":"contact-26a","path":"/contact/"}],"dataPaths":{"404-22d":"657/path---404-22-d-bce-yc2HAWbdDECy3NCKIhFOCg1lY8","404-html-516":"84/path---404-html-516-62a-yc2HAWbdDECy3NCKIhFOCg1lY8","about-f34":"691/path---about-f-34-4c2-WV9OHhcgC975Z2f0az9WK5Dpl0Y","contact-26a":"662/path---contact-26-a-cd9-SNoLKPyPsqQ59X6yAuuT79ALOJc","index":"612/path---index-6a9-j0JKW3rrllGOOtWKwyNn0ujHMk"}}
\ No newline at end of file
---
> {"pages":[{"componentChunkName":"component---src-pages-index-js","jsonName":"index","path":"/"},{"componentChunkName":"component---src-pages-404-js","jsonName":"404-html-516","path":"/404.html"},{"componentChunkName":"component---src-pages-404-js","jsonName":"404-22d","path":"/404/"},{"componentChunkName":"component---src-pages-about-js","jsonName":"about-f34","path":"/about/"},{"componentChunkName":"component---src-pages-contact-js","jsonName":"contact-26a","path":"/contact/"}],"dataPaths":{"404-22d":"657/path---404-22-d-bce-yc2HAWbdDECy3NCKIhFOCg1lY8","404-html-516":"84/path---404-html-516-62a-yc2HAWbdDECy3NCKIhFOCg1lY8","about-f34":"691/path---about-f-34-4c2-WV9OHhcgC975Z2f0az9WK5Dpl0Y","contact-26a":"662/path---contact-26-a-cd9-SNoLKPyPsqQ59X6yAuuT79ALOJc","index":"770/path---index-6a9-dVi4vZoL0B52PVt3C79b9kQk"}}
\ No newline at end of file
diff 23.cache/default-html.js .cache/default-html.js
4,31c4,29
< export default class HTML extends React.Component {
< render() {
< return (
< <html {...this.props.htmlAttributes}>
< <head>
< <meta charSet="utf-8" />
< <meta httpEquiv="x-ua-compatible" content="ie=edge" />
< <meta
< name="viewport"
< content="width=device-width, initial-scale=1, shrink-to-fit=no"
< />
< {this.props.headComponents}
< </head>
< <body {...this.props.bodyAttributes}>
< {this.props.preBodyComponents}
< <noscript key="noscript" id="gatsby-noscript">
< This app works best with JavaScript enabled.
< </noscript>
< <div
< key={`body`}
< id="___gatsby"
< dangerouslySetInnerHTML={{ __html: this.props.body }}
< />
< {this.props.postBodyComponents}
< </body>
< </html>
< )
< }
---
> export default function HTML(props) {
> return (
> <html {...props.htmlAttributes}>
> <head>
> <meta charSet="utf-8" />
> <meta httpEquiv="x-ua-compatible" content="ie=edge" />
> <meta
> name="viewport"
> content="width=device-width, initial-scale=1, shrink-to-fit=no"
> />
> {props.headComponents}
> </head>
> <body {...props.bodyAttributes}>
> {props.preBodyComponents}
> <noscript key="noscript" id="gatsby-noscript">
> This app works best with JavaScript enabled.
> </noscript>
> <div
> key={`body`}
> id="___gatsby"
> dangerouslySetInnerHTML={{ __html: props.body }}
> />
> {props.postBodyComponents}
> </body>
> </html>
> )
Common subdirectories: 23.cache/fragments and .cache/fragments
Common subdirectories: 23.cache/json and .cache/json
diff 23.cache/navigation.js .cache/navigation.js
37c37
< const onPreRouteUpdate = location => {
---
> const onPreRouteUpdate = (location, prevLocation) => {
39c39
< apiRunner(`onPreRouteUpdate`, { location })
---
> apiRunner(`onPreRouteUpdate`, { location, prevLocation })
43c43
< const onRouteUpdate = location => {
---
> const onRouteUpdate = (location, prevLocation) => {
45c45
< apiRunner(`onRouteUpdate`, { location })
---
> apiRunner(`onRouteUpdate`, { location, prevLocation })
136c136
< onPreRouteUpdate(props.location)
---
> onPreRouteUpdate(props.location, null)
140c140
< onRouteUpdate(this.props.location)
---
> onRouteUpdate(this.props.location, null)
145c145
< onRouteUpdate(this.props.location)
---
> onRouteUpdate(this.props.location, prevProps.location)
151c151
< onPreRouteUpdate(this.props.location)
---
> onPreRouteUpdate(this.props.location, prevProps.location)
diff 23.cache/static-entry.js .cache/static-entry.js
55c55,59
< <meta name="generator" content={`Gatsby ${gatsbyVersion}`} />,
---
> <meta
> name="generator"
> content={`Gatsby ${gatsbyVersion}`}
> key={`generator-${gatsbyVersion}`}
> />,
354,360c358,366
< const bodyScripts = scripts.filter(s => s.rel !== `prefetch`).map(s => {
< const scriptPath = `${__PATH_PREFIX__}/${JSON.stringify(s.name).slice(
< 1,
< -1
< )}`
< return <script key={scriptPath} src={scriptPath} async />
< })
---
> const bodyScripts = scripts
> .filter(s => s.rel !== `prefetch`)
> .map(s => {
> const scriptPath = `${__PATH_PREFIX__}/${JSON.stringify(s.name).slice(
> 1,
> -1
> )}`
> return <script key={scriptPath} src={scriptPath} async />
> })
Различия после средства обновления и запуска новой сборки @madelyneriksen
patch-package
--- a/node_modules/gatsby/dist/internal-plugins/query-runner/pages-writer.js
+++ b/node_modules/gatsby/dist/internal-plugins/query-runner/pages-writer.js
@@ -88,9 +88,9 @@ const preferDefault = m => m && m.default || m
let asyncRequires = `// prefer default export if available
const preferDefault = m => m && m.default || m
\n`;
- asyncRequires += `exports.components = {\n${components.map(c => ` "${c.componentChunkName}": () => import("${(0, _path.joinPath)(c.component)}" /* webpackChunkName: "${c.componentChunkName}" */)`).join(`,\n`)}
+ asyncRequires += `exports.components = {\n${components.map(c => ` "${c.componentChunkName}": () => require("${(0, _path.joinPath)(c.component)}" /* webpackChunkName: "${c.componentChunkName}" */)`).join(`,\n`)}
}\n\n`;
- asyncRequires += `exports.data = () => import(/* webpackChunkName: "pages-manifest" */ "${(0, _path.joinPath)(program.directory, `.cache`, `data.json`)}")\n\n`;
+ asyncRequires += `exports.data = () => require(/* webpackChunkName: "pages-manifest" */ "${(0, _path.joinPath)(program.directory, `.cache`, `data.json`)}")\n\n`;
const writeAndMove = (file, data) => {
const destination = (0, _path.joinPath)(program.directory, `.cache`, file);
Это должно работать для .98
Возможно, я ошибаюсь, изменение приводит к сбою тестов https://github.com/gatsbyjs/gatsby/pull/11331
Пока не знаю почему.
Значит, это все равно не работает?
Сценарий сборки успешно с предложенным мной изменением. Но я не уверен, что это правильное решение. Поэтому, пожалуйста, проверьте и просмотрите его.
Хм, или это из-за нового пресета?
https://github.com/gatsbyjs/gatsby/commit/69faca0bff0e2c04e6b3be50bba087284c3dbf6b#diff -a30bb413b08d8091d9187909b256c943
Правильный ли массив плагинов?
Возникает ли проблема и в новом новом проекте Gatsby, и можно ли ее воспроизвести с помощью тестов CI?
Я
npm update
и проблема исчезла
Предоставьте список установленных зависимостей (до и после обновления).
@DanielRuf , я не могу воспроизвести это, думаю, это была случайность, я все еще получаю ошибку.
Обходной путь - установить зависимости с помощью Yarn вместо npm, который, кажется, работает после импорта файла блокировки npm.
Вы можете найти мои npm ls
с gatsby v2.0.91 (сборка прошла успешно) и v2.0.93 (сборка не удалась) здесь: https://gist.github.com/cyrildurand/f4b70abff19288117ea3996500532774
У меня все еще проблема с gatsby 2.0.103
Вы тоже пытались установить зависимости с помощью yarn
?
@cyrildurand
Сталкивались ли вы с этой ошибкой при установке npm
?
У меня тоже была такая же проблема, но обновление версии arcon
до 6.0 прошло хорошо.
Вы столкнулись с этой ошибкой при установке npm
Это просто предупреждение и не связано с проблемой Гэтсби.
Та же ошибка после установки acorn
он работает с yarn
. Я обновил суть выходом yarn list
Такая же ошибка после установки желудя
Какая ошибка?
Я попытался обновить acorn
, предложенный @ seonim-ryu, и попытаться запустить gatsby build
и у меня возникла такая же ошибка "неожиданного токена" (из первого сообщения этой проблемы)
Если я использую пряжу, проблема исчезнет, команда gatsby build
завершится успешно.
То же происходит и с предыдущими выпусками Acorn? Или дело не в этом?
Вы пробовали предложенное мной исправление? Не уверен, что это что-нибудь сломает.
Это также не удалось с предыдущей версией acorn, я не думаю, что это связано с этим.
Теперь, когда я устанавливаю зависимости, он работает, и я не уверен, как применить предложенное вами исправление.
Перейдите в node_modules / gatsby / dist / internal-plugins / query-runner / pages-writer.js и измените два import(
на require(
, также см. Https://github.com/gatsbyjs / gatsby / issues / 11198 # issuecomment -457915157
Работает с исправлением
Что-нибудь сломалось из-за исправления? Неудачные сборки CI выглядят не очень хорошо.
Возможно, отдельная проблема, но я получил аналогичную ошибку после обновления до последней версии Gatsby (2.0.106) и добавления страницы 404 в соответствии с документацией ('src / pages / 404.js'). Разработка прошла нормально, но сборка не удалась.
Перемещение страницы 404 в отдельную папку ('src / pages / 404 / index.js') устранило ошибку на моей стороне и работает должным образом (локально и при развертывании в Netlify).
Я исправил проблему, удалив мой файл package-lock.json
и запустив npm install
. Новый сгенерированный файл package-lock.json
имел много различий.
Не знаю точно, что здесь происходит.
Я сталкиваюсь с одними и теми же проблемами на нескольких разных сайтах. Некоторые с точно такими же зависимостями и версиями ... один попадет в ошибку, другой нет. Это началось около 2.0.98, я думаю, и до сих пор с 2.0.106. Я пробовал удалить node_modules, .cache и общие папки, но это тоже не помогло. Только при сборке, а не при разработке.
@cyrildurand
Я переименовал package-lock.json во что-то другое и npm install
ed все, но снова получил:
error Generating JavaScript bundles failed
Error: ./.cache/async-requires.js 8:11
Module parse failed: Unexpected token (8:11)
You may need an appropriate loader to handle this file type.
| exports.components = {
| "component---node-modules-gatsby-plugin-offline-app-shell-js": function componentNodeModulesGatsbyPluginOfflineAppShellJs() {
> return import("/home/foldername/abcrypto/node_modules/gatsby-plugin-offline/app-shell.js"
| /* webpackChunkName: "component---node-modules-gatsby-plugin-offline-app-shell-js" */
| );
@ ./.cache/production-app.js 18:0-45 21:23-36 26:23-36
Вы очистили папку node_modules
?
Как ты это делаешь? :(
npm prune node_modules
?
Или удалить все вручную внутри папки node_modules?
Изменить: я переименовал папку node_modules, и теперь она работает: +1:
npm install
в основной папкеСпасибо @cyrildurand
Отредактировано после предложения @DanielRuf
Просто переименуйте его, чтобы иметь резервную копию.
Значит, это действительно проблема с устаревшей зависимостью?
Я удалял модули узлов несколько раз, и это никогда не исправлялось для меня. единственное, что сработало, - это пряжа или файл патча выше.
@krazik а вы
да
просто чтобы убедиться, что я попробовал еще раз, и удалив оба, я могу обойти ошибку выше, но теперь сталкиваюсь с
Ошибка: не удается найти модуль core-js / modules / es6.regexp.to-string
Ошибка: не удается найти модуль core-js / modules / es6.regexp.to-string
как для сборки, так и для разработки.
error Cannot find module 'core-js/modules/es6.regexp.to-string'
Error: Cannot find module 'core-js/modules/es6.regexp.to-string'
- loader.js:611 Function.Module._resolveFilename
internal/modules/cjs/loader.js:611:15
- loader.js:537 Function.Module._load
internal/modules/cjs/loader.js:537:25
- loader.js:665 Module.require
internal/modules/cjs/loader.js:665:17
- helpers.js:20 require
internal/modules/cjs/helpers.js:20:18
- render-page.js:3 webpackUniversalModuleDefinition
/Users/rylanhazelton/dev/Admin/public/render-page.js:3:170
- render-page.js:10 Object.<anonymous>
/Users/rylanhazelton/dev/Admin/public/render-page.js:10:3
- loader.js:736 Module._compile
internal/modules/cjs/loader.js:736:30
- loader.js:747 Object.Module._extensions..js
internal/modules/cjs/loader.js:747:10
- loader.js:628 Module.load
internal/modules/cjs/loader.js:628:32
- loader.js:568 tryModuleLoad
internal/modules/cjs/loader.js:568:12
- loader.js:560 Function.Module._load
internal/modules/cjs/loader.js:560:3
- loader.js:665 Module.require
internal/modules/cjs/loader.js:665:17
- helpers.js:20 require
internal/modules/cjs/helpers.js:20:18
- worker.js:32 Promise
[Admin]/[gatsby]/dist/utils/worker.js:32:35
- debuggability.js:313 Promise._execute
[Admin]/[bluebird]/js/release/debuggability.js:313:9
- promise.js:483 Promise._resolveFromExecutor
[Admin]/[bluebird]/js/release/promise.js:483:18
error UNHANDLED REJECTION
Error: Cannot find module 'core-js/modules/es6.regexp.to-string'
- loader.js:611 Function.Module._resolveFilename
internal/modules/cjs/loader.js:611:15
- loader.js:537 Function.Module._load
internal/modules/cjs/loader.js:537:25
- loader.js:665 Module.require
internal/modules/cjs/loader.js:665:17
- helpers.js:20 require
internal/modules/cjs/helpers.js:20:18
- render-page.js:3 webpackUniversalModuleDefinition
/Users/rylanhazelton/dev/Admin/public/render-page.js:3:170
- render-page.js:10 Object.<anonymous>
/Users/rylanhazelton/dev/Admin/public/render-page.js:10:3
- loader.js:736 Module._compile
internal/modules/cjs/loader.js:736:30
- loader.js:747 Object.Module._extensions..js
internal/modules/cjs/loader.js:747:10
- loader.js:628 Module.load
internal/modules/cjs/loader.js:628:32
- loader.js:568 tryModuleLoad
internal/modules/cjs/loader.js:568:12
- loader.js:560 Function.Module._load
internal/modules/cjs/loader.js:560:3
- loader.js:665 Module.require
internal/modules/cjs/loader.js:665:17
- helpers.js:20 require
internal/modules/cjs/helpers.js:20:18
- worker.js:32 Promise
[Admin]/[gatsby]/dist/utils/worker.js:32:35
- debuggability.js:313 Promise._execute
[Admin]/[bluebird]/js/release/debuggability.js:313:9
- promise.js:483 Promise._resolveFromExecutor
[Admin]/[bluebird]/js/release/promise.js:483:18
Попробуйте закрыть редактор, удалить .cache, public, node_modules и package-lock.json. Затем выполните установку npm.
Я почти уверен, что это просто какое-то забавное решение пакета от NPM.
Мне удалось разобраться с зависимостями на моих сайтах, удалив файл блокировки и node_modules
. Мне не удалось воспроизвести его за пределами взломанных сайтов.
После удаления моих package-lock.json
, node_modules
и установки с использованием yarn
меня возникла еще одна ошибка: terser-webpack-plugin
cannot call minify of undefined
(что-то в этом роде). Это исправило это для меня.
Я думаю, что экосистема Node.js действительно самая быстрая из всех ;-)
Последнее обновление Terser (выпущенное час назад) ломает этот плагин.
Итак, это новая проблема (в зависимости).
Я могу подтвердить, что это две разные проблемы, я столкнулся с обеими: https://github.com/gr2m/octokit-rest-documentation/issues/24
Ошибка Terser происходит из этих строк
const {
error,
map,
code,
warnings
} = _terser.default.minify({
[file]: input
}, terserOptions);
Это работает, если вы замените _terser.default.minify
только на _terser.minify
Я также испытываю эту проблему в своих сборках Travis CI. Даже использование yarn
не исправит. Любой быстрый патч, который я мог бы использовать, пока не выйдет нужное исправление? благодаря
Ошибка Terser должна быть решена сейчас
terser-webpack-plugin был исправлен, и мы опубликовали 2.0.112 с новой версией terser-webpack-plugin
Я не уверен, связано ли это, но не могли бы вы попробовать обновить?
А пока, @DanielRuf @dlindahl, не могли бы вы дать ссылку на минимальное воспроизведение проблемы, которую вы видите?
См. Https://github.com/gatsbyjs/gatsby/issues/11198#issuecomment -457905564
@sidharthachatterjee Я могу подтвердить, обновление до определенного [email protected] решило мою проблему на Gitlab CI.
Ошибка Terser должна быть решена сейчас
подтверждено.
Давай закроем это. Прокомментируйте, если мы можем помочь в дальнейшем или это _не подтверждено_, чтобы исправить.
Спасибо всем!
Исходная ошибка, из-за которой была открыта эта проблема, остается:
Error: ./.cache/async-requires.js 8:11
Module parse failed: Unexpected token (8:11)
@ gr2m не могли бы вы предоставить репродукцию?
В любом случае - открою заново, спасибо!
У меня была такая же проблема.
Ошибка синтаксического анализа модуля: неожиданный токен (8:11)
Для работы с этим типом файлов вам может потребоваться соответствующий загрузчик.
Исправление пряжи сработало для меня.
Удаление .cache / public / node_modules не помогло.
Проблема началась для меня после запуска обновления npm.
Такая же проблема здесь.
"@magicsoup.io/stock": "0.0.11",
"@zauberware/react-scroll-to": "^0.1.1",
"@zauberware/react-svg-assets": "^0.10.2",
"babel-plugin-styled-components": "^1.10.0",
"gatsby": "^2.0.115",
"gatsby-image": "^2.0.29",
"gatsby-plugin-htaccess": "^1.0.8",
"gatsby-plugin-manifest": "^2.0.17",
"gatsby-plugin-offline": "^2.0.22",
"gatsby-plugin-react-helmet": "^3.0.6",
"gatsby-plugin-sharp": "^2.0.20",
"gatsby-plugin-sitemap": "^2.0.5",
"gatsby-plugin-styled-components": "^3.0.5",
"gatsby-plugin-web-font-loader": "^1.0.4",
"gatsby-source-filesystem": "^2.0.20",
"gatsby-transformer-json": "^2.1.8",
"gatsby-transformer-remark": "^2.2.4",
"gatsby-transformer-sharp": "^2.1.13",
"marksy": "^6.1.0",
"prop-types": "^15.6.2",
"react": "^16.7.0",
"react-dom": "^16.7.0",
"react-helmet": "^5.2.0",
"react-i18next": "^10.0.0",
"react-obfuscate": "^3.0.0",
"react-slick": "^0.23.2",
"styled-components": "^4.1.3",
"styled-normalize": "^8.0.6",
"styled-system": "^3.2.1",
Пытается загрузить шаблон из src / templates
Error: ./.cache/async-requires.js 8:11
Module parse failed: Unexpected token (8:11)
You may need an appropriate loader to handle this file type.
| exports.components = {
| "component---src-templates-markdown-template-js": function componentSrcTemplatesMarkdownTemplateJs() {
> return import("/Users/simon/workspaces/web/altstadtdomizil/src/templates/markdownTemplate.js"
| /* webpackChunkName: "component---src-templates-markdown-template-js" */
| );
@ ./.cache/production-app.js 18:0-45 21:23-36 26:23-36
gatsby-node.js
exports.createPages = ({ actions, graphql }) => {
const { createPage } = actions
const blogPostTemplate = path.resolve(`src/templates/markdownTemplate.js`)
return graphql(`
{
allMarkdownRemark(
sort: { order: DESC, fields: [frontmatter___title] }
limit: 1000
) {
edges {
node {
frontmatter {
path
}
}
}
}
}
`).then(result => {
if (result.errors) {
return Promise.reject(result.errors)
}
result.data.allMarkdownRemark.edges.forEach(({ node }) => {
createPage({
path: node.frontmatter.path,
component: blogPostTemplate,
context: {}, // additional data can be passed via context
})
})
})
}
Если я закомментирую gatsby-node.js, я получаю такую ошибку:
Error: ./.cache/async-requires.js 8:11
Module parse failed: Unexpected token (8:11)
You may need an appropriate loader to handle this file type.
| exports.components = {
| "component---src-pages-404-js": function componentSrcPages404Js() {
> return import("/Users/simon/workspaces/web/altstadtdomizil/src/pages/404.js"
| /* webpackChunkName: "component---src-pages-404-js" */
| );
@ ./.cache/production-app.js 18:0-45 21:23-36 26:23-36
вернуть импорт (
См. Другие комментарии.
Это отображается в значках / щитах # 2947 при обновлении с 2.0.115 до 2.0.116 или 2.0.117.
Недавно я объединил значки / щиты # 2949, которые обновили babel-preset-gatsby
с 0.1.6 до 0.1.7, хотя я пробовал взломать версию на более раннюю версию, и это не устранило проблему.
Проблема была обнаружена в CI и постоянно там проявляется. Наш CI не сохраняет .cache
, так что это можно исключить.
Error: ./.cache/async-requires.js 8:11
Module parse failed: Unexpected token (8:11)
You may need an appropriate loader to handle this file type.
| exports.components = {
| "component---frontend-components-main-js": function componentFrontendCompo nentsMainJs() {
> return import("/home/circleci/project/frontend/components/main.js"
| /* webpackChunkName: "component---frontend-components-main-js" */
| );
@ ./.cache/production-app.js 18:0-45 21:23-36 26:23-36
Думаю, проблема в этом: webpack / webpack # 8656.
Добавлено: соответствие симптомов и совпадение сроков.
@paulmelnikow хороший улов. Вот почему я рекомендую использовать CJS, если нам не нужно использовать ESM - он все равно не на 100% надежен в сборщиках. И другой способ все равно должен работать.
Итак, закрепление веб-пакета в корневом package.json должно работать?
И это также объясняет, почему SemVer в экосистеме JS полностью сломан, imho. Автоматическое обновление (глубоких) deps, потому что файлы блокировки работают только на корневом уровне.
Чтобы было ясно, acorn
и способ, которым npm разрешает deptree, являются проблемой и причиной.
https://github.com/webpack/webpack/issues/8656#issuecomment -456010969
Я могу воспроизвести это (еще одна причина, по которой мы все еще используем пряжу на работе).
Если быть точным, это проблема npm.
https://npm.community/t/packages-with-peerdependencies-are-incorrectly-hoisted/4794/4
https://npm.community/t/release-npm-6-8-0-next-0/5058
Решение: установите последнюю версию npm.
Я не уверен, что согласен с такой оценкой. Это может проявляться в npm, а не в yarn из-за различий в способах разрешения, однако 4.29.3 - это совершенно правильная версия для установки, когда пакет объявил зависимость от ^ 4.12.0. Вот что означает каретка. Если Гэтсби хочет заблокировать определенную версию, это можно сделать, и в этом случае npm выполнит это.
Webpack - это зависимость Gatsby, а не одноранговая зависимость.
Проблема заключалась в подъеме в npm (отличается в Yarn), и из-за этого не удалось правильно загрузить acorn
. См. Сообщение сообщества Тобиаса и связанный комментарий.
Я чувствую, что мне нужно, чтобы вы объяснили это лучше. Я просмотрел эти темы, но не вижу, как это применимо здесь.
Я не знаю, что вызывает ошибку в Webpack; однако, если мы согласны с тем, что Гэтсби не следует использовать 4.29.3, необходимо изменить зависимость каретки.
Он работает с пряжей, это просто проблема с npm, в сочетании с конкретными зависимостями и вычислением deptree. См. PR Тобиаса.
Aiiiee gotcha. Это ошибка зависимостей одноранговых узлов в npm, из-за которой webpack 4.29 работает некорректно.
Что мы _ можем_ предотвратить, так это установку webpack 4.29. И я не уверен, что есть простой способ заблокировать версию webpack конечным пользователем. npm не предоставляет способа сделать это, поэтому пользователям придется использовать что-то вроде стороннего инструмента npm-force-resolution .
См. Npm / cli # 152; не похоже, что мы можем ожидать быстрого разрешения.
Теперь, когда 2.0.118 поставляет пластырь, пользователи npm должны быть в порядке и, очевидно, не могут использовать webpack 4.29.x в любом случае.
Правильно ли я, что пользователи yarn могут использовать resolutions
чтобы заставить Гэтсби использовать более позднюю версию, выходящую за пределы допустимого диапазона, если они хотят?
@paulmelnikow правильно - но на самом деле в этом нет необходимости, и я не уверен, что в этом есть особая необходимая польза.
Мы обновим закрепленную зависимость, как только сможем (теперь после проблемы с npm), так что это должно быть всего лишь всплеском для пользователей npm
в частности.
Спасибо за исправление!
_Now_ Я думаю, что могу закрыть это :)
Подтверждено исправление с выпуском 2.0.118!
Это было потрясающе. Спасибо всем за прекрасную работу!
Всем привет! Интересно, могли бы вы, ребята, попробовать npm install gatsby@webpack-acorn
. Мы хотим обновить веб-пакет до последней версии, но не уверены, что это по-прежнему проблема. Я не мог воспроизвести это, но мы скорее хотим перестраховаться, чем сожалеть.
Привет @wardpeet! Спасибо, что обратились к нам.
Создал ветку здесь: значки / щиты # 3572
Похоже, это все еще проблема: https://circleci.com/gh/badges/shields/57401
Для локального воспроизведения нужно клонировать эту ветвь и запустить npm ci
за которым следует npm run build
. Не стесняйтесь делать это, если хотите, или свяжитесь со мной, и я могу обновить ветку PR.
@paulmelnikow большое спасибо! Не могли бы вы также сказать мне, какую версию node и npm вы используете, чтобы я мог запустить ее с вашей настройкой, если она мне подходит.
Вот что у меня локально:
~/c/shields (bump-webpack-rc|✔) $ node --version
v10.13.0
~/c/shields (bump-webpack-rc|✔) $ npm --version
6.9.0
В CI это также происходит в Node 8 (не уверен, точная версия npm).
Проблема воспроизводится в обеих средах.
Спасибо, что изучили это!
Самый полезный комментарий
Обходной путь - установить зависимости с помощью Yarn вместо npm, который, кажется, работает после импорта файла блокировки npm.