<p>gatsby-node.js ES6 рдЖрдпрд╛рдд рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛</p>

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рд╕рд┐рддре░ 2018  ┬╖  39рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: gatsbyjs/gatsby

рд╡рд┐рд╡рд░рдг

gatsby-node.js ES6 рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

gatsby-node.js :

import myOnCreatePage from './gatsby/node/onCreatePage';
export const onCreatePage = myOnCreatePage;

рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо

gatsby-node.js рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ ES6 рдХреЛ gatsby-ssr.js рдпрд╛ gatsby-browser.js рддрд░рд╣ рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо

рддреНрд░реБрдЯрд┐

Error: <root>/gatsby-node.js:1
SyntaxError: Unexpected token import

рд╡рд╛рддрд╛рд╡рд░рдг

  System:
    OS: macOS High Sierra 10.13.6
    CPU: x64 Intel(R) Core(TM) i7-6567U CPU @ 3.30GHz
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 8.10.0 - ~/.nvm/versions/node/v8.10.0/bin/node
    Yarn: 1.9.4 - /usr/local/bin/yarn
    npm: 6.4.1 - ~/.nvm/versions/node/v8.10.0/bin/npm
  Browsers:
    Chrome: 68.0.3440.106
    Firefox: 61.0.2
    Safari: 11.1.2
  npmPackages:
    gatsby: next => 2.0.0-rc.5 
    gatsby-source-filesystem: next => 2.0.1-rc.1 
  npmGlobalPackages:
    gatsby-cli: 1.1.58

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП esm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдЕрдм рддрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рд╣реИ:

  1. esm ( npm i esm ) рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
  2. рдЕрдкрдиреЗ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ gatsby-node.esm.js рдирд╛рдордХ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ (рд╡рд╣реА рдлрд╝реЛрд▓реНрдбрд░ рдЬрд┐рд╕рдореЗрдВ gatsby-node.js )
  3. рдЕрдкрдиреЗ рд╕рднреА рдХреЛрдб рдХреЛ gatsby-node.js рд╕реЗ gatsby-node.esm.js
  4. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рд╛рде gatsby-node.js рдореЗрдВ рд╕рднреА рдХреЛрдб рдмрджрд▓реЗрдВ:
    javascript require = require('esm')(module) module.exports = require('./gatsby-node.esm.js')
  5. import рдХрд╛ рдЙрдкрдпреЛрдЧ gatsby-node.esm.js рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ

@KyleAMathews рдХреНрдпрд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдЦрддрд░рдирд╛рдХ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдпрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рддреЛ рдореИрдВ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ :)

рд╕рднреА 39 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╡рд╣ рдлрд╝рд╛рдЗрд▓ node.js рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдИ рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдиреЛрдб рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдиреЛрдб рдореЗрдВ Es6 рдореЙрдбреНрдпреВрд▓ рд╕рдорд░реНрдерди рдЕрднреА рднреА рдПрдХ рд╡рд╛рдЗрдк рд╣реИ https://medium.com/@giltayar/native -es-modules-in-nodejs-status-and-future-directions-part-i-ee5ea3001f71

рдореИрдВ рднреА рдЗрд╕рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ gatsby-mdx/mdx-renderer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ require рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рдпрдВ ES6 рдореЙрдбреНрдпреВрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рдмреНрд░реЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдХреНрдпрд╛ gatsby-node.js рдХреЛ рдмреЗрдмреЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрджрд▓рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдХрдо рдЬрд░реВрд░реА рд╣реИред

рдХреНрдпрд╛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рд╣реЛрдЧрд╛ import / export рдореЗрдВ рд╕рдорд░реНрдерди gatsby-node.js ? рдордзреНрдпрдо рдкреЛрд╕реНрдЯ .mjs рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрд▓реНрд▓реЗрдЦреЛрдВ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЧреИрдЯреНрд╕рдмреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛?

рд╡рд╣рд╛рдБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ babel-node рдХреЗ рдмрдЬрд╛рдп node ?

рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП esm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдЕрдм рддрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рд╣реИ:

  1. esm ( npm i esm ) рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
  2. рдЕрдкрдиреЗ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ gatsby-node.esm.js рдирд╛рдордХ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ (рд╡рд╣реА рдлрд╝реЛрд▓реНрдбрд░ рдЬрд┐рд╕рдореЗрдВ gatsby-node.js )
  3. рдЕрдкрдиреЗ рд╕рднреА рдХреЛрдб рдХреЛ gatsby-node.js рд╕реЗ gatsby-node.esm.js
  4. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рд╛рде gatsby-node.js рдореЗрдВ рд╕рднреА рдХреЛрдб рдмрджрд▓реЗрдВ:
    javascript require = require('esm')(module) module.exports = require('./gatsby-node.esm.js')
  5. import рдХрд╛ рдЙрдкрдпреЛрдЧ gatsby-node.esm.js рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ

@KyleAMathews рдХреНрдпрд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдЦрддрд░рдирд╛рдХ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдпрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рддреЛ рдореИрдВ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ :)

рдпрд╣ рдкреИрдЯрд░реНрди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ @nikoladev рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдХрд╣рд╛рдВ рдЬрд╛рдПрдЧрд╛ред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ @gatsbyjs/docs?

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛:

require('babel-register')({
  presets: [ 'env' ]
})
require('babel-polyfill')
module.exports = require(`./gatsby-node.mjs`)

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╢ рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк gatsby-node.js рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреИрд╢ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред

@KyleAMathews рд╕рд╛рдордЧреНрд░реА рдФрд░ рдбреЗрдЯрд╛ рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдХреЗ рддрд╣рдд рдХреИрд╕реЗ? рдХрдо рд╕реЗ рдХрдо рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред

рдпрд╣ рдПрдХ рдЕрд▓рдЧ рддрд░рд╣ рдХреА рдмрд╣рд╕ рд╣реИ, рд▓реЗрдХрд┐рди import рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдореМрдХреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрдбрд╝реА рдЧреИрдЯреНрд╕рдмреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП, gatsby-node.js рдореЗрдВ рдЬреЛ рд╣реЛрддрд╛ рд╣реИ рд╡рд╣ рдЖрдкрдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлреНрд░рдВрдЯ-рдПрдВрдб рдЬрд┐рддрдирд╛ рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдФрд░ рдпрд╣ import , async/await рд╕рд╛рде рдЖрдзреБрдирд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдХреЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред

@KyleAMathews , рдХреНрдпрд╛ рд╕реНрдерд╛рдиреАрдп ES6 рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ src/utils/article.js рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ рдирд┐рдореНрди рдХреА рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

// src/utils/article.js
import { format } from 'date-fns'

export const createArticleUrl = (a) => (
  `/${format(a.publishDate, 'YYYY')}` +
  `/${format(a.publishDate, 'MM')}` +
  `/${format(a.publishDate, 'DD')}` +
  `/${a.category.urlSlug}` +
  `/${a.urlSlug}`
)

рдФрд░ рдореЗрд░реА gatsby-node.js рдлрд╝рд╛рдЗрд▓:

// gatsby-node.js
...
const { createArticleUrl } = require(`./src/utils/article`)
...

рдФрд░ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

  Error: .../src/utils/article.js:1
  (function (exports, require, module, __filename, __dirname) { import { format } from 'date-fns'
                                                                ^^^^^^
  SyntaxError: Unexpected token import

рдХреЛрдИ рд╡рд┐рдЪрд╛рд░? рдореИрдВ рдЕрдкрдиреЗ рд▓реЗрдЦ/рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдпреВрдЖрд░рдПрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ рдореИрдВ рдЕрдкрдиреЗ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдореЗрдВ рдХрд░рддрд╛ рд╣реВрдВред рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВ рдЕрдкрдиреА src/utils/article.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ ES5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рдЬреИрд╕реЗ:

// src/utils/article.js
const { format } = require('date-fns')

var createArticleUrl = function (a) {
  return (
    `/${format(a.publishDate, 'YYYY')}` +
    `/${format(a.publishDate, 'MM')}` +
    `/${format(a.publishDate, 'DD')}` +
    `/${a.category.urlSlug}` +
    `/${a.urlSlug}`
  )
}

module.exports.createArticleUrl = createArticleUrl

рдФрд░ рдлрд┐рд░ gatsby-node.js , рдЗрд╕ рддрд░рд╣:

// gatsby-node.js
...
const { createArticleUrl } = require(`./src/utils/article`)
...

рдореИрдВ ES6 рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдХреА рддрд░рд╣ createArticleUrl рднреА рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, import { createArticleUrl } from '../utils/article' ред

рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП esm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдЕрдм рддрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рд╣реИ:

  1. esm ( npm i esm ) рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
  2. рдЕрдкрдиреЗ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ gatsby-node.esm.js рдирд╛рдордХ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ (рд╡рд╣реА рдлрд╝реЛрд▓реНрдбрд░ рдЬрд┐рд╕рдореЗрдВ gatsby-node.js )
  3. рдЕрдкрдиреЗ рд╕рднреА рдХреЛрдб рдХреЛ gatsby-node.js рд╕реЗ gatsby-node.esm.js
  4. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рд╛рде gatsby-node.js рдореЗрдВ рд╕рднреА рдХреЛрдб рдмрджрд▓реЗрдВ:
    js require = require('esm')(module) module.exports = require('./gatsby-node.esm.js')
  5. import рдХрд╛ рдЙрдкрдпреЛрдЧ gatsby-node.js рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ

@KyleAMathews рдХреНрдпрд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдЦрддрд░рдирд╛рдХ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдпрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рддреЛ рдореИрдВ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ :)

рдХреНрдпрд╛ релрд╡рд╛рдВ " import рдХрд╛ рдЙрдкрдпреЛрдЧ gatsby-node.esm.js рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ"?

@WeZZard рдЖрдк рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ! рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреА рдкреЛрд╕реНрдЯ рдореЗрдВ рдареАрдХ рдХрд░ рджреВрдВрдЧрд╛ред

рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ package.json рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ:

  "scripts": {
    "build": "npx --node-arg '-r esm' gatsby build",
    "develop": "npx --node-arg '-r esm' gatsby develop",
    "start": "npx --node-arg '-r esm' npm run develop",
    "serve": "npx --node-arg '-r esm' gatsby serve",
    "test": "echo \"Write tests! -> https://gatsby.app/unit-testing\""
  },

рдирдИ рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ

@reaktivo рдЖрдкрдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ netlify рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдХрд░ рдкрд╛рдпрд╛ред рдХреНрдпрд╛ рдЖрдк npx рд╕рд╛рде рдиреЗрдЯрд▓рд┐рдлрд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдХреЛ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ?

@rotexhawk рдиреЗ рдмрд╕ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛:

https://github.com/reaktivo/gatsby-esm/
https://gatsby-esm-example.netlify.com/

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдХреЛ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ npm install --save-dev esm рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдЕрдкрдиреЗ рдирд┐рд░реНрдорд╛рдг config рдЪрд▓рд╛рддрд╛ рд╣реИ рдХрд┐ npm run build рдХреЗ рдмрдЬрд╛рдп gatsby build

рдЗрд╕ рдХрдорд┐рдЯ рдХреЛ рджреЗрдЦреЗрдВ: https://github.com/reaktivo/gatsby-esm/commit/cf620259ac8b118dea38b99409963cb26bf1b240

рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдИрдПрд╕рдПрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ netlify рдХреЗ рдкрд╛рд╕ npx рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ, рдХрдорд╛рдВрдб рд╡рд┐рдлрд▓ рдХрд╣рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдиреЛрдб рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реБрдЖред

@rotexhawk рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЬреАрдм рд╣реИ, рдореИрдВрдиреЗ рдЖрдкрдХреЛ рдЬреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рднреЗрдЬрд╛ рд╣реИ, рдЙрд╕реЗ Netlify рдкрд░ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ... рд╡реИрд╕реЗ рднреА, рдЕрдЧрд░ рдЖрдкрдХреЛ npx рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  "scripts": {
    "build": "node -r esm ./node_modules/bin/gatsby build",
    "develop": "node -r esm ./node_modules/bin/gatsby develop",
    "start": "npm run develop",
    "serve": "node -r esm ./node_modules/bin/gatsby serve",
    "test": "echo \"Write tests! -> https://gatsby.app/unit-testing\""
  },

@rotexhawk Netlify рдЯреАрдо рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рд╣реИ, рдЖрдкрдХреЛ NPM_VERSION рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рджреЗрдЦреЗрдВ https://www.netlify.com/docs/build-settings/#node -npm-and-yarn

@reaktivo рдХрд░реЗрдВрдЧреЗред рдкреВрд░реА рд╕рд╣рд╛рдпрддрд╛рдХреЗ рд▓рд┐рдП рд╢реБрдХреНрд░рд┐рдпрд╛ред

рдореИрдВ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдЙрд╕ esm рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рджреГрдврд╝рддрд╛ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ Gatsby рдпрд╣ рд╕рдВрдХреЗрдд рджреЗ рд░рд╣рд╛ рд╣реИ рдХрд┐ es6 рдореЙрдбреНрдпреВрд▓ рдХреЛ gatsby-node.js рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрдм рдЖрдк рдореЙрдбреНрдпреВрд▓ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдореБрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ:

error This plugin file is using both CommonJS and ES6 module systems together which we don't support. You'll need to edit the file to use just one or the other.

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЖрдк es6 рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

esm рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдвреВрдВрдв рд╕рдХрддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░рдердо рд╕реНрддрд░ рдХреЗ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ gatsby-node.ems.js , рди рдХрд┐ рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдпрд╛рддрд┐рдд рдШрдЯрдХ рднреА рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,

./gatsby-node.ems.js

import foo from "./foo";
const fooText = foo + " more text";

./рдлреВ

import bar from "bar";
const foo = bar("whatever");
export default foo;

рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ:

Error in "C:\...\gatsby-node.js": Cannot find module 'bar'

рдХреЗ рдмрд╛рдж рд╕реЗ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рд▓рдЧрднрдЧ рджреЗрдЦрддреЗ рд╣реИрдВ, рдореИрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдиреЛрдб --experimental-modules рдХреЗ рдмрдЬрд╛рдп esm ред

рдореИрдВрдиреЗ scripts.start рдХреЛ "node --experimental-modules ./node_modules/.bin/gatsby develop" рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛, gatsby-node.js рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ gatsby-node.mjs , рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ

"~/website/gatsby-node.mjs" рдореЗрдВ рддреНрд░реБрдЯрд┐: ES рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: ~/website/gatsby-node.mjs

рддреНрд░реБрдЯрд┐: [ERR_REQUIRE_ESM]: ES рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: ~/website/gatsby-node.mjs

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рд╣рдо рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдВ рдмрддрд╛рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ рдЗрддрдирд╛ рд╣реА рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдХреБрдЫ рдкреИрдХреЗрдЬ рдЕрднреА рддрдХ рдЗрд╕ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдиреЛрдб рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИрдВ рдпрд╛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЪреАрдЬреЗрдВ рд╕реНрдерд┐рд░ рд╣реЛрдиреЗ рдкрд░ рд╣рдо рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдлрд┐рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдм рдЬрдмрдХрд┐ ES рдореЙрдбреНрдпреВрд▓ рдЕрдм рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИрдВ , рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╡реЗ рдЕрднреА рднреА рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╣реИрдВ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВред рдмрд╕ рдЭрдВрдбрд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЕрдзреАрди рд░рд╣рддрд╛ рд╣реИ

рдореИрдВрдиреЗ рдЗрд╕рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЕрднреА рддрдХ рджрд░реНрдж рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред рд▓реЛрдбрд░ рдХреЗ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдпрд╛ esm рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдмреЗрдмреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╣реИ? рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореИрдВ рдЕрдкрдиреЗ рдмреИрдмреЗрд▓ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЛ рдПрдХ рдЧреИрдЯреНрд╕рдмреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЫреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рд╕рдм рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЧреИрдЯреНрд╕рдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ module.exports рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдбрд╝реЗ рдХрджрдо рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

Modern web tech without the headache -> рдЗрддрдирд╛ рдирд╣реАрдВ :(

npm i esm

рдФрд░ рдлрд┐рд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ:

https://github.com/wesbos/awesome-uses/blob/master/package.json#L39 -L42

@wesbos @reaktivo рдХреНрдпрд╛ рдЖрдк рдирд╡реАрдирддрдо рдЧреИрдЯреНрд╕рдмреА (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ реи.реиреи.резрен) рдХреЗ рд╕рд╛рде рдЕрднреА рднреА рдЙрд╕ рдлрд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ?

рдореИрдВрдиреЗ рдЙрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЬ рдЧреИрдЯреНрд╕рдмреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рдЖрдпрд╛рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛:

```

npx --node-arg '-r esm' gatsby development

рддреНрд░реБрдЯрд┐ #10123 рдХреЙрдиреНрдлрд┐рдЧ

рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдХреЗ gatsby-config рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдХреГрдкрдпрд╛ рддреНрд░реБрдЯрд┐ рдареАрдХ рдХрд░реЗрдВ рдФрд░ рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рддреНрд░реБрдЯрд┐: /project/gatsby-config.js:1
(рдлрд╝рдВрдХреНрд╢рди (рдирд┐рд░реНрдпрд╛рдд, рдЖрд╡рд╢реНрдпрдХрддрд╛, рдореЙрдбреНрдпреВрд▓, __filename, __dirname) { рдЖрдпрд╛рдд urlJoin "url-join" рд╕реЗ;
^^^^^^
рд╕рд┐рдВрдЯреИрдХреНрд╕ рддреНрд░реБрдЯрд┐: рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд╣рд░ рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ ```

рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк gatsby-* рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛

рдКрдкрд░ рдореЗрд░реА рдИрдПрд╕рдПрдо рдЪрд╛рд▓ рдиреЗ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЧреИрдЯреНрд╕рдмреА рдФрд░ рдиреЛрдб рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рднреА рд╡рд╛рдкрд╕ рд░реЛрд▓ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдмрдиреА рд░рд╣рддреА рд╣реИред

рдЗрд╕реЗ рдпрд╣рд╛рдБ рд╡рд┐рд╕реНрддреГрдд рдХрд░реЗрдВ рдпрджрд┐ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ: https://github.com/reaktivo/gatsby-esm/issues/1

@caycecollins рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХреЛрдИ рдлрд┐рдХреНрд╕ рдорд┐рд▓рд╛?

@wesbos рдореИрдВ рдЕрдм рд╡рд╛рдкрд╕ es5 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯ рд░рд╣рд╛ рд╣реВрдВ :(

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рдЕрднреА рдЖрдкрдХрд╛ рдирд╡реАрдирддрдо рд╕реБрдзрд╛рд░ рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рд╣реИ https://github.com/gatsbyjs/gatsby/issues/24925 ... рдореИрдВ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛ рджреВрдВрдЧрд╛!

рдмрд╕ рдПрдХ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдШрдВрдЯреЗ рддрдХ рд╕рдВрдШрд░реНрд╖ рдХрд┐рдпрд╛ рдФрд░ рдЕрдВрдд рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рд░рдЦрд╛ рд╣реИред рдмрд┐рд▓реНрдб рдХреЗ рд▓рд┐рдП рдЬреЗрд╕рди, рдиреЗрдЯрд▓рд┐рдлрд╛рдИ рдпреВрдЖрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд▓реЗ рд░рд╣рд╛ рдерд╛ред рдпрд╣ рддрдм рддрдХ рдирд╣реАрдВ рдерд╛ рдЬрдм рддрдХ рдореИрдВрдиреЗ netlify.toml рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ред рдХрд╣рд╛рдиреА рдХрд╛ рдиреИрддрд┐рдХ, рдЕрдкрдиреА Netlify UI рдмрд┐рд▓реНрдб рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рдпрд╛ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЯреЙрд╕ рдХрд░реЗрдВред рдореИрдВ рдмрд╛рдж рд╡рд╛рд▓реЗ рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ

[build]
  command = "npm run build"
  publish = "public"

рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╣рд╛рдБ, рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛:

"build": "NODE_OPTIONS='-r esm' gatsby build",

рд╡рд╛рд╣, рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХрдард┐рди рд╣реИ, рд▓реЗрдХрд┐рди рдИрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдЕрдм рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рджреЗрдЦрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ (рдЬреЛ рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реИрдз рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП) рдЕрдиреБрд░рдХреНрд╖рдХ _рд╡рд┐рд░реБрджреНрдз рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд░рд╣реЗ рд╣реИрдВ _ ... рдЦрд╛рд╕рдХрд░ рдЬрдм рдЬреЗрдбрд▓рдЯрди рдФрд░ рдЙрд╕рдХрд╛ esm рдкреИрдХреЗрдЬ рдмрдирд╛рддрд╛ рд╣реИ рдпрд╣ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реИ!

PS рдХреБрдЫ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╡рд┐рд╡рд░рдг рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗ ...

  • рдпрд╣ рджреЛ рд▓рд╛рдЗрди рдХрд╛ рдлрд┐рдХреНрд╕ рд╣реИред рдЬрдм рддрдХ рдЧреИрдЯреНрд╕рдмреА рдореЗрдВ рдХрдИ "рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ" рди рд╣реЛрдВ, рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг рдкреАрдЖрд░ рддреАрди рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрдВрдЧреА: esm рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП package.json рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐, рдФрд░ рдкрдВрдХреНрддрд┐рдпрд╛рдБ:
require = require("esm")(module/*, options*/)
module.exports = require("./main.js")
  • рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреНрдиреЗрдХреНрд╕ рдЬреИрд╕реЗ рдкреНрд░рдореБрдЦ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ

  • рдпрд╣ рд▓реЛрджрд╢ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреБрдЫ рдЬреВрдирд┐рдпрд░ рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреА рдкрд╣рд▓реА рдПрдирдкреАрдПрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ: рдпрд╣ рдПрдХ рдЕрдиреБрднрд╡реА рдкреЗрд╢реЗрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рдд рдПрдХ рдЧрдВрднреАрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред

  • рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд┐рдЫрдбрд╝рд╛-рд╕рдВрдЧрдд рд╣реИ: рдЬрдм рддрдХ рдХреЛрдИ рдЕрдкрдиреЗ рдЧреИрд░-рдИрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛрдб рдореЗрдВ import рдпрд╛ export рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рд╡реЗ рд╕рдордп рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдЬреЗрдПрд╕ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХреАрд╡рд░реНрдб рд░рд╣реЗ рд╣реИрдВ) рд╕рднреА рдореМрдЬреВрджрд╛ рдХреЛрдб рд╡рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛

  • рдпрджрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рджрд░реНрд╢рди рдЪрд┐рдВрддрд╛ рдереА рддреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ "рдЧреЗрдЯ рдХреАрдк" рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП knex рдЗрд╕ рдорд╛рд░реНрдЧ рдкрд░ рдЬрд╛рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛ рдЧрдпрд╛)

рддреЛ рдпрд╣ "рдХреЛрдб рдХреА рддреАрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдзреБрдирд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ" рдпрд╛ ... рдЗрд╕рдХреЗ рд▓рд┐рдП рд▓рдбрд╝реЗрдВ? рдлрд╛рдпрджрд╛ред

рдЕрдЧрд░ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдореБрдЭреЗ рдкреАрдЖрд░ рдЬрдорд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА :)

рдХреНрдпрд╛ рдХреЛрдИ рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓реЗрдХрд┐рди рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдмрдВрдж рдореБрджреНрджреЛрдВ рдореЗрдВ рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╕реНрдХрд┐рдо рдХрд░рдиреЗ рдХреЗ рдЗрд╕ рдиреГрддреНрдп рдХреЛ рдХрд░рдиреЗ рд╕реЗ рдирдлрд░рдд рд╣реИ, рдЬрд╣рд╛рдВ рдмрд╛рддрдЪреАрдд рдЕрднреА рднреА рд╣реЛ рд░рд╣реА рд╣реИ рдФрд░ рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реА рд╣реИ рдХрд┐ рдХрд┐рд╕рдХреЗ рдкрд╛рд╕ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЕрдВрдЧреВрдареЗ рд╣реИрдВ рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛ рдирд╣реАрдВ рд╣реИ esm рдореЙрдбреНрдпреВрд▓ рдХрд╛рдо: рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдЕрддреНрдпрдВрдд рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдЧреИрдЯреНрд╕рдмреА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрд╛рдирддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдЦреБрдж рдПрдХ рдкреАрдЖрд░ рдЬрдорд╛ рдХрд░реВрдВрдЧрд╛ (рдФрд░ рдлрд┐рд░, рдПрдХ рдФрд░ рдкреНрд░рдореБрдЦ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреЗрд╡рд▓

рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ рд╕рд┐рд░реНрдл рдЙрд╕ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рджреЗрдЦрднрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдЦрд░рдЦрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИ :(

рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднрд▓реЗ рд╣реА рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░рдХреНрд╖рдХ рдХреЛ рдЖрдзреБрдирд┐рдХ JS рдореЙрдбреНрдпреВрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдирдлрд░рдд рдереА, рдлрд┐рд░ рднреА рд╡реЗ рдХрдо рд╕реЗ рдХрдо рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░ рд╕рдХрддреЗ рдереЗ ... рдлрд┐рд░ рд╕реЗ, рд╕рдВрднрд╡рддрдГ рдХреЛрдб рдХреА рдХреЗрд╡рд▓ рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде) рдЕрдиреНрдпрдерд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдЯреАрдо рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рд░рд╣реА рд╣реИ, рдпрд╣ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ _not_ рд╣реИ рдЬрд┐рд╕рд╕реЗ esm рдореЙрдбреНрдпреВрд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ _extremely_ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдЧреИрдЯреНрд╕рдмреА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрд╛рдирддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдЦреБрдж рдПрдХ рдкреАрдЖрд░ рдЬрдорд╛ рдХрд░реВрдВрдЧрд╛ (рдФрд░ рдлрд┐рд░, рдПрдХ рдФрд░ рдкреНрд░рдореБрдЦ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреЗрд╡рд▓

рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ рд╕рд┐рд░реНрдл рдЙрд╕ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рджреЗрдЦрднрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдЦрд░рдЦрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИ :(

рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднрд▓реЗ рд╣реА рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░рдХреНрд╖рдХ рдХреЗ рдкрд╛рд╕ рдЖрдзреБрдирд┐рдХ JS рдореЙрдбреНрдпреВрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд _hated_ рд╣реЛ, рдлрд┐рд░ рднреА рд╡реЗ рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдЗрдЪреНрдЫрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ... рдлрд┐рд░ рд╕реЗ, рд╕рдВрднрд╡рддрдГ рдХреЛрдб рдХреА рдХреЗрд╡рд▓ рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде) рдЕрдиреНрдпрдерд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдЯреАрдо рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рд░рд╣реА рд╣реИ, рдпрд╣ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рд╕реЗ рдХреЛрдИ рд╢рдмреНрдж?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Oppenheimer1 picture Oppenheimer1  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mikestopcontinues picture mikestopcontinues  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ferMartz picture ferMartz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ghost picture ghost  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jimfilippou picture jimfilippou  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ