Gatsby: 2.0.84๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•œ ํ›„`async-requires`์—์„œ "Unexpected token"์œผ๋กœ ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 01์›” 21์ผ  ยท  81์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: gatsbyjs/gatsby

๊ธฐ์ˆ 

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, 2.0.83 ๋˜๋Š” 2.0.84 ๋นŒ๋“œ์—์„œ async-require.js ์˜ ๋‚ด์šฉ์— ์ฐจ์ด๊ฐ€ ์—†์Œ์„ ์•Œ ์ˆ˜ ์—†์œผ๋ฉฐ gatsby-plugin-offline ์—…๊ทธ๋ ˆ์ด๋“œํ•ด๋„ ์•„๋ฌด๋Ÿฐ ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

needs reproduction question or discussion

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ npm ์ž ๊ธˆ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜จ ํ›„ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” npm ๋Œ€์‹  Yarn์„ ์‚ฌ์šฉํ•˜์—ฌ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  81 ๋Œ“๊ธ€

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 ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ์ „์— ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿคทโ€โ™‚๏ธ

ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ

์ด๊ฒƒ์˜ ์ตœ์†Œํ•œ์˜ ๋ณต์ œ์— ์—ฐ๊ฒฐํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

.npmrc์—์„œ package-lock.json์ด ๋น„ํ™œ์„ฑํ™” ๋œ Gatsby v 2.0.55๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ์‚ฌ์ดํŠธ๋Š” ๋งค์ผ ๊นจ๋—ํ•œ ์ž‘์—… ๊ณต๊ฐ„์—์„œ ์ง€์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ๋‚ ์€ ํšจ๊ณผ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ๋‹ค์Œ ๋‚ ์€ ๊ทธ๋ ‡์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๊ฐ€ ๋ณ€๊ฒฝ๋œ ์ผ์‹œ์ ์ธ ์ข…์†์„ฑ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

gatsby ์„ v2.0.91 ์—์„œ v2.0.93 ( v2.0.92 )๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ๋•Œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ์ €๋„ ํ˜„์žฌ์ด ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ์ง€๋งŒ ์ตœ์†Œํ•œ์˜ ์žฌ์ƒ์‚ฐ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋‚ด ์ €์žฅ์†Œ ์—์„œ npm update ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•˜์ง€๋งŒ ๋‚ด ๊ฐœ์ธ ์›น ์‚ฌ์ดํŠธ ์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์›์ธ์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ๋˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์•Œ์•„๋‚ผ ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ ํŒŒํ—ค์น  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊นจ๋—ํ•˜๊ฒŒ ๋ถ„๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ๋‹ค๋ฉด ์—ฌ๊ธฐ์— ๋‹ค์‹œ ๊ฒŒ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ!

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค!
npm 6.7.0 ๋ฒ„์ „์„ ์–ป๊ธฐ ์œ„ํ•ด npm update -g npm ๋ฅผ ์ž…๋ ฅํ–ˆ๊ณ  gatsby 2.0.98์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ ๋น„ ํ”Œ๋Ÿฌ๊ทธ์ธ ์˜คํ”„๋ผ์ธ ๋ฒ„์ „-> 2.0.21

์ด ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ์ €์žฅ์†Œ : ์‹œ์ž‘ ํ•ฉ๋‹ˆ๋‹ค .

๋˜ํ•œ ๋‹น์‹ ๊ณผ ํ•จ๊ป˜ ์„ค์น˜ ์ข…์†์„ฑ์„ ํ‘œ์‹œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค npm ls ์‹คํ–‰ node --version ?

์ด๋“ฑ๋ถ„์€ ์—ฌ๊ธฐ์„œ๋„ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๋ถ„ ์•ˆ์— ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ์ด๋“ฑ๋ถ„ ํ•  ๊ฒƒ์ด๋‹ค.

๋ชจ๋“  ๋ฒ„์ „์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฏ€๋กœ ์•„๋งˆ๋„ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋˜๋Š” ๋‹ค๋ฅธ ์ข…์†์„ฑ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋” ํ…Œ์ŠคํŠธ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์›์ธ์„ ์ฐพ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํŒจ์น˜์™€ PR์„ ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@omrllm (๊ฐœ์ธ ๋น„ 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 ๋ณ€๊ฒฝํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋ˆ„๋ฝ ๋œ ๋กœ๋”๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ESM ๋ฐฉ์‹์ด ๋ฌธ์ œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  exports ์™€ import ํ˜ผํ•ฉํ•˜๋Š” ๊ฒƒ์€ ๊ฒฐ์ฝ” ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹Œ๋ฐ ์—ฌ๊ธฐ์„œ 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 , ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์žฌํ˜„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์šฐ์—ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ npm ์ž ๊ธˆ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜จ ํ›„ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” npm ๋Œ€์‹  Yarn์„ ์‚ฌ์šฉํ•˜์—ฌ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

gatsby v2.0.91 (๋นŒ๋“œ ์„ฑ๊ณต) ๋ฐ v2.0.93 (๋นŒ๋“œ ์‹คํŒจ)์—์„œ ๋‚ด npm ls ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://gist.github.com/cyrildurand/f4b70abff19288117ea3996500532774

์—ฌ์ „ํžˆ gatsby 2.0.103์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

yarn ์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๊นŒ?

ํ—‰ํ—‰
npm ์„ ์„ค์น˜ํ•  ๋•Œ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ ํ–ˆ์Šต๋‹ˆ๊นŒ?
2019-01-29 4 50 27
๋‚˜๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ arcon ์˜ ๋ฒ„์ „์„ 6.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

npm์„ ์„ค์น˜ํ•  ๋•Œ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ ํ–ˆ์Šต๋‹ˆ๊นŒ?

์ด๋Š” ๊ฒฝ๊ณ  ์ผ ๋ฟ์ด๋ฉฐ Gatsby ๋ฌธ์ œ์™€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

acorn ์„ค์น˜ ํ›„ ๋™์ผํ•œ ์˜ค๋ฅ˜

yarn ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. yarn list ์ถœ๋ ฅ์œผ๋กœ ์š”์ ์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„ํ† ๋ฆฌ ์„ค์น˜ ํ›„ ๋™์ผํ•œ ์˜ค๋ฅ˜

์–ด๋–ค ์˜ค๋ฅ˜?

acorn ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค @ seonim-ryu๊ฐ€ ์ œ์•ˆํ•˜๊ณ  gatsby build ์‹คํ–‰์„ ์‹œ๋„ํ–ˆ๋Š”๋ฐ ๋™์ผํ•œ "์˜ˆ๊ธฐ์น˜ ์•Š์€ ํ† ํฐ"์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค (์ด ๋ฌธ์ œ์˜ ์ฒซ ๋ฒˆ์งธ ๋ฉ”์‹œ์ง€์—์„œ ๊ฐ€์ ธ์˜จ ์˜ค๋ฅ˜).

์›์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์ง€๊ณ  gatsby build ๋ช…๋ น์ด ์„ฑ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ๋„ํ† ๋ฆฌ ๋ฆด๋ฆฌ์Šค์—์„œ๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ด๊ฒƒ์ด ์›์ธ์ด ์•„๋‹™๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ์ œ์•ˆํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์‹œ๋„ ํ–ˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์ด ๋ฌด์—‡์ด๋“  ๊นจ๋œจ๋ฆด ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์ „ ๋ฒ„์ „์˜ ๋„ํ† ๋ฆฌ์—์„œ๋„ ์‹คํŒจํ–ˆ์ง€๋งŒ ๊ด€๋ จ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜๊ณ  ์ œ์•ˆ ๋œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

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)๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ๋ฌธ์„œ ( 'src / pages / 404.js')์— ๋”ฐ๋ผ 404 ํŽ˜์ด์ง€๋ฅผ ์ถ”๊ฐ€ ํ•œ ํ›„ ๋น„์Šทํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์€ ์ž˜ ์‹คํ–‰๋˜์ง€๋งŒ ๋นŒ๋“œ๋Š” ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

404 ํŽ˜์ด์ง€๋ฅผ ์ž์ฒด ํด๋” ( 'src / pages / 404 / index.js')๋กœ ์ด๋™ํ•˜๋ฉด ๋‚ด ์ชฝ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ํ•ด๊ฒฐ๋˜๊ณ  ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค (๋กœ์ปฌ ๋ฐ Netlify ๋ฐฐํฌ์‹œ).

๋‚ด ์‚ญ์ œํ•˜์—ฌ ๋ฌธ์ œ ํ•ด๊ฒฐ package-lock.json ํŒŒ์ผ์„ ์‹คํ–‰ npm install . ์ƒˆ๋กœ ์ƒ์„ฑ ๋œ package-lock.json ํŒŒ์ผ์—๋Š” ๋งŽ์€ ์ฐจ์ด๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์ •ํ™•ํžˆ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๊ฐ€์ง„ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํžˆ ๋™์ผํ•œ ์ข…์†์„ฑ ๋ฐ ๋ฒ„์ „์„ ๊ฐ€์ง„ ์ผ๋ถ€ ... ํ•˜๋‚˜๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ํ•˜๋‚˜๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ 2.0.98์—์„œ ์‹œ์ž‘๋˜์—ˆ์œผ๋ฉฐ ์—ฌ์ „ํžˆ 2.0.106์—์„œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. node_modules, .cache ๋ฐ ๊ณต์šฉ ํด๋”๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋„์›€์ด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ด ์•„๋‹Œ ๋นŒ๋“œ์—์„œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํ—‰ํ—‰
package-lock.json์˜ ์ด๋ฆ„์„ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊พธ๊ณ  npm install ๋ชจ๋“  ๊ฒƒ์„ ํŽธ์ง‘ํ–ˆ์ง€๋งŒ ๋‹ค์‹œ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

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 :

  • package-lock.json์„ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค.
  • node_modules ํด๋”์˜ ์ด๋ฆ„์„ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ํด๋”์˜ npm install

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @cyrildurand
@DanielRuf ์ œ์•ˆ ํ›„์— ํŽธ์ง‘ ๋จ

๋ฐฑ์—…์„ ์œ„ํ•ด ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ •๋ง ์˜ค๋ž˜๋œ ์ข…์†์„ฑ์— ๋Œ€ํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ?

๋…ธ๋“œ ๋ชจ๋“ˆ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ญ์ œํ–ˆ๋Š”๋ฐ ์ˆ˜์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํšจ๊ณผ๊ฐ€ ์žˆ์—ˆ๋˜ ๊ฒƒ์€ ์›์‚ฌ ๋˜๋Š” ์œ„์˜ ํŒจ์น˜ ํŒŒ์ผ๋ฟ์ž…๋‹ˆ๋‹ค.

@krazik ๋ฐ package-lock.json์„ ์‚ญ์ œ / ์ด๋ฆ„ ๋ณ€๊ฒฝ ํ–ˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ

๋‹ค์‹œ ์‹œ๋„ํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋‘˜ ๋‹ค ์‚ญ์ œํ•˜๋ฉด ์œ„์˜ ์˜ค๋ฅ˜๋ฅผ ์ง€๋‚˜์น  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด์ œ๋Š”

์˜ค๋ฅ˜ : '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 ์ƒํƒœ๊ณ„๊ฐ€ ์ •๋ง ๊ฐ€์žฅ ๋น ๋ฅธ ์†๋ณด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค ;-)

์ตœ์‹  ๊ฐ„๊ฒฐํ•œ ์—…๋ฐ์ดํŠธ (ํ•œ ์‹œ๊ฐ„ ์ „์— ์ถœ์‹œ๋จ)๊ฐ€์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๊ฒƒ์€ ์ƒˆ๋กœ์šด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค (์ข…์†์„ฑ).

๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฌธ์ œ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋ชจ๋‘ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. 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์ด ์ˆ˜์ •๋˜์—ˆ์œผ๋ฉฐ ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ terser-webpack-plugin๊ณผ ํ•จ๊ป˜ 2.0.112๋ฅผ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ๋„ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๊ทธ๋™์•ˆ @DanielRuf @dlindahl ๋‹น์‹ ์ด๋ณด๊ณ ์žˆ๋Š” ๋ฌธ์ œ์˜ ์ตœ์†Œํ•œ์˜ ์žฌํ˜„์— ๋งํฌ ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@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

return import (

๋‹ค๋ฅธ ์˜๊ฒฌ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

2.0.115์—์„œ 2.0.116 ๋˜๋Š” 2.0.117๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋™์•ˆ ๋ฐฐ์ง€ / ์‹ค๋“œ # 2947์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ตœ๊ทผ์— babel-preset-gatsby ๋ฅผ 0.1.6์—์„œ 0.1.7๋กœ ์—…๋ฐ์ดํŠธ ํ•œ ๋ฐฐ์ง€ / ์‹ค๋“œ # 2949๋ฅผ ๋ณ‘ํ•ฉํ–ˆ์ง€๋งŒ, ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œ์—์„œ ํ•ดํ‚น์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” 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

https://circleci.com/gh/badges/shields/39885

์ด๊ฒƒ์ด ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค : webpack / webpack # 8656.

์ถ”๊ฐ€๋จ : ์ฆ์ƒ์ด ์ผ์น˜ํ•˜๊ณ  ํƒ€์ด๋ฐ๋„ ๋งž์Šต๋‹ˆ๋‹ค.

screen shot 2019-02-07 at 9 17 12 pm

screen shot 2019-02-07 at 9 17 19 pm

@paulmelnikow ์ข‹์€ ์บ์น˜. ์ด๊ฒƒ์ด ESM์„ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€์—†๋Š” ๊ฒฝ์šฐ CJS ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ๋ฒˆ ๋“ค๋Ÿฌ์—์„œ๋Š” ์—ฌ์ „ํžˆ 100 % ์‹ ๋ขฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฃจํŠธ package.json์— webpack์„ ๊ณ ์ •ํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด JS ์ƒํƒœ๊ณ„์˜ SemVer๊ฐ€ ์™„์ „ํžˆ ๋ง๊ฐ€์ง„ ์ด์œ ์ด๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ž ๊ธˆ ํŒŒ์ผ์ด ๋ฃจํŠธ ์ˆ˜์ค€์—์„œ๋งŒ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— (deep) 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์œผ๋กœ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์ง€๋งŒ, 4.29.3์€ ํŒจํ‚ค์ง€๊ฐ€ ^ 4.12.0์— ๋Œ€ํ•œ ์ข…์†์„ฑ์„ ์„ ์–ธํ–ˆ์„ ๋•Œ ์„ค์น˜ํ•˜๊ธฐ์— ์™„๋ฒฝํ•˜๊ฒŒ ์˜ฌ๋ฐ”๋ฅธ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์บ๋Ÿฟ์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”์ž…๋‹ˆ๋‹ค. Gatsby๊ฐ€ ํŠน์ • ๋ฒ„์ „์„ ์ž ๊ทธ๊ณ  ์‹ถ๋‹ค๋ฉด ๊ทธ๋ ‡๊ฒŒํ•˜๋Š” ๊ฒƒ์„ ํ™˜์˜ํ•˜๋ฉฐ,์ด ๊ฒฝ์šฐ npm์ด์ด๋ฅผ ์กด์ค‘ํ•ฉ๋‹ˆ๋‹ค.

Webpack์€ ํ”ผ์–ด ์ข…์†์„ฑ์ด ์•„๋‹ˆ๋ผ Gatsby์˜ ์ข…์†์„ฑ์ž…๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” npm (Yarn์—์„œ ๋‹ค๋ฆ„)์˜ ํ˜ธ์ด ์ŠคํŒ…์ด๋ฉฐ ์ด๋กœ ์ธํ•ด acorn ์ œ๋Œ€๋กœ๋กœ๋“œ ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Tobias ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฒŒ์‹œ๋ฌผ ๋ฐ ๋งํฌ ๋œ ๋Œ“๊ธ€์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋‹น์‹ ์ด ๋” ์ž˜ ์„ค๋ช… ํ•ด์ฃผ๊ธธ ๋ฐ”๋ž˜์š”. ๋‚˜๋Š” ๊ทธ ์Šค๋ ˆ๋“œ๋ฅผ ํ›‘์–ด ๋ณด์•˜์ง€๋งŒ ์—ฌ๊ธฐ์— ์–ด๋–ป๊ฒŒ ์ ์šฉ๋˜๋Š”์ง€ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

Webpack์—์„œ ๋ฒ„๊ทธ์˜ ์›์ธ์ด ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Gatsby๊ฐ€ 4.29.3์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์•ผํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜๋ฉด ์บ๋Ÿฟ ์ข…์†์„ฑ์„ ๋ณ€๊ฒฝํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” yarn๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋ฉฐ ํŠน์ • ์ข…์†์„ฑ ๋ฐ deptree ๊ณ„์‚ฐ๊ณผ ํ•จ๊ป˜ npm์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. Tobias์˜ PR์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

https://github.com/npm/cli/pull/147/files ์ฐธ์กฐ

Aiiiee gotcha. ์›นํŒฉ 4.29๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์›์ธ์€ npm์˜ ํ”ผ์–ด ์ข…์†์„ฑ ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๋ฐฉ์ง€ ํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ์€ ์›นํŒฉ 4.29์˜ ์„ค์น˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ์›นํŒฉ ๋ฒ„์ „์„ ์ž ๊ทธ๋Š” ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. npm์€์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž๋Š” ํƒ€์‚ฌ ๋„๊ตฌ ์ธ npm-force-resolutions ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

npm / cli # 152; ๋น ๋ฅธ ํ•ด๊ฒฐ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด์ œ 2.0.118์ด ๋ฐ˜์ฐฝ๊ณ ๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ npm ์‚ฌ์šฉ์ž๋Š” ๊ดœ์ฐฎ์„ ๊ฒƒ์ด๋ฉฐ ๋ถ„๋ช…ํžˆ ์›นํŒฉ 4.29.x๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์›์‚ฌ ์‚ฌ์šฉ์ž๊ฐ€ resolutions ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Gatsby๊ฐ€ ์›ํ•  ๊ฒฝ์šฐ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ์ตœ์‹  ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๊นŒ?

@paulmelnikow ๋งž์Šต๋‹ˆ๋‹ค-ํ•˜์ง€๋งŒ ๊ผญ ํ•„์š”ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ๊ทธ๋ ‡๊ฒŒํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ํŠน๋ณ„ํ•œ ์ด์ ์ด ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ๊ณ ์ • ๋œ ์ข…์†์„ฑ์„ ์—…๋ฐ์ดํŠธ ํ•  ๊ฒƒ์ด๋ฏ€๋กœ (์ง€๊ธˆ npm ๋ฌธ์ œ๋ฅผ ๋”ฐ๋ฆ„) ํŠนํžˆ npm ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์ผ์‹œ์  ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ˆ˜์ • ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

_ ์ง€๊ธˆ _ ์ด๊ฑฐ ๋๋‚ผ ์ˆ˜์žˆ์„ ๊ฒƒ ๊ฐ™์•„์š” :)

2.0.118 ๋ฆด๋ฆฌ์Šค๋กœ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

๋”ฐ๋ผ๊ฐ€๋Š” ๊ฒƒ์ด ๋†€๋ž์Šต๋‹ˆ๋‹ค. ๋†€๋ผ์šด ์ž‘์—…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

๋ชจ๋‘ ์•ˆ๋…•! ๋‚˜๋Š” ๋„ˆํฌ๋“ค์ด npm install gatsby@webpack-acorn ์Šคํ•€์„ ์ค„ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์›นํŒฉ์„ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์ด๊ฒƒ์ด ์—ฌ์ „ํžˆ ๋ฌธ์ œ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์žฌํ˜„ ํ•  ์ˆ˜ ์—†์—ˆ์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ๋ฏธ์•ˆํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์•ˆ์ „ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @wardpeet! ๋ฌธ์˜ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค : badges / shields # 3572

์—ฌ์ „ํžˆ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค : https://circleci.com/gh/badges/shields/57401

๋กœ์ปฌ๋กœ ๋ณต์ œํ•˜๋Š” ๋‹จ๊ณ„๋Š” ํ•ด๋‹น ๋ถ„๊ธฐ๋ฅผ ๋ณต์ œํ•˜๊ณ  npm ci ๋‹ค์Œ์— npm run build ์ž…๋‹ˆ๋‹ค. ์›ํ•˜์‹œ๋ฉด ์–ธ์ œ๋“ ์ง€ ๊ทธ๋ ‡๊ฒŒ ํ•˜์‹œ๊ฑฐ๋‚˜ ์ €์—๊ฒŒ ping์„ ๋ณด๋‚ด์‹œ๋ฉด PR ๋ธŒ๋žœ์น˜๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@paulmelnikow ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋˜ํ•œ ์‚ฌ์šฉ์ค‘์ธ ๋…ธ๋“œ ๋ฐ 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 ๋ฒ„์ „์€ ํ™•์‹คํ•˜์ง€ ์•Š์Œ).

๋ฌธ์ œ๋Š” ๋‘ ํ™˜๊ฒฝ ๋ชจ๋‘์—์„œ ์žฌํ˜„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์กฐ์‚ฌํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰