рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ knex cli рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП es6 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЭрдВрдбреЗ рдХреЗ рдкреАрдЫреЗ рд╣реЛ рдпрд╛ рдХреЗрд╡рд▓ рддрднреА рдЬрдм рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ .babelrc
рдлрд╝рд╛рдЗрд▓ рд╣реЛред
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИред
рдорд╛рдлрд╝ рдХрд░рдирд╛ред рд╡рд╣ рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдЕрдВрдХ резреиреиреж рдХреЗ рд▓рд┐рдП рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдереА, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЧрд▓рддреА рд╕реЗ рд╡рд╣ рдЯрд┐рдкреНрдкрдгреА рдпрд╣рд╛рдБ рдбрд╛рд▓ рджреАред
@ rhys-vdw рдХреНрдпрд╛ рдЖрдк рд╣рд╛рде рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рд▓рдЧреЗрдЧрд╛?
@rhys- vdw @jmfurlott ред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рднреА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛ рд╣реЛрдЧреАред рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╣рдореЗрдВ рдЙрди рдШрдЯрдХреЛрдВ рдХреА рдУрд░ рд╕рдВрдХреЗрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реЗ рд╕рдВрднрд╡ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреБрдЫ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдорджрдж рдХрд░реЗрдЧреА
рд╕реАрдПрд▓рдЖрдИ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдореЗрдВ require("babel-register")
рдЬреЛрдбрд╝рдирд╛ рд╢рд╛рдпрдж рдХрд╛рдо рдХрд░реЗред
рдкреБрд╖реНрдЯрд┐ рдХреА - рдореЗрд░реА рдмреАрдЬ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдФрд░ ES2015 рдЪрд▓ рд░рд╣рд╛ рдерд╛! рд╢рд╛рдпрдж knexfile.js
рдореЗрдВ compiler
рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ рдореЛрдЪрд╛ рдЙрдирдХреЗ рд╕реАрдПрд▓рдЖрдИ рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реИ?
рдореБрдЭреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдореЗрд░рд╛ рдХрд╛рдо рдорд┐рд▓ рдЧрдпрд╛:
db.config.js
export default {
devDB: {
client: 'sqlite3',
connection: {
filename: './db.sqlite3',
},
pool: {
min: 1,
max: 1,
},
},
migrations: {
directory: './migrations',
tableName: '_migrations',
},
seeds: {
directory: './seeds/dev'
},
pool: {
min: 1,
max: 1,
}
}
knexfile.js
require('babel-register')
const config = require('./db.config').default // <- this -.-
module.exports = config
.рдмреЗрдмреЗрд▓рдЖрд░рд╕реА
{
"env": {
"devDB": {
"plugins": ["transform-es2015-modules-commonjs"]
}
}
}
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВ рдмреАрдЬ рдкрде рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддрд╛, рдЬрдм рд╡реЗ ./seeds рдореЗрдВ рд╕реНрдерд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ рдорд┐рд▓реЗрдЧрд╛
No seed files exist
рд╡рд╣реА рдкрд▓рд╛рдпрди рдХреЗ рд▓рд┐рдП рднреА..
рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк Knex рдХреЛ babel-node
рд╕рд╛рде рдЪрд▓рд╛рдирд╛ рд╣реИ, рдЬреЛ babel-cli
, рдЬреИрд╕реЗ:
{
"scripts": {
"db:migrate:latest": "babel-node node_modules/.bin/knex migrate:latest"
}
}
рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Babel рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХрд╛ рдРрдк knexfile.js
рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ require('babel-register')
рд╡рд┐рдХрд▓реНрдк рдЕрдиреБрдкрдпреЛрдЧреА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
@jeremejevs рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ ... рд╕рд╛рде
{
"scripts": {
"knex": "babel-node node_modules/.bin/knex"
}
}
рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
npm run knex migrate:latest
рд╕рднреА Knex рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдП рдмрд┐рдирд╛ред
@olalonde рд╣рд╛рдБ, рд╡рд╣ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдореИрдВ рд╕рд┐рд░реНрдл рд╕реНрдкрд╖реНрдЯ "рдбреАрдмреА: рдорд╛рдЗрдЧреНрд░реЗрдЯ: рдореЗрдХ " рдФрд░ "рдбреАрдмреА: рдорд╛рдЗрдЧреНрд░реЗрдЯ: рдирд╡реАрдирддрдо " рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдореИрдВ рдЖрдзреЗ рд╕рд╛рд▓ рдмрд╛рдж рд╕рдЯреАрдХ рд╢рдмреНрдж рднреВрд▓ рдЬрд╛рддрд╛ рд╣реВрдВ (рдХреНрдпрд╛ рдпрд╣ "рдореЗрдХ" рдерд╛? рдпрд╛ "рдореЗрдХ-рдорд╛рдЗрдЧреНрд░реЗрд╢рди"? рдпрд╛ "рдорд╛рдЗрдЧреНрд░реЗрдЯ: рдореЗрдХ"? рдпрд╛ "рдорд╛рдЗрдЧреНрд░реЗрдЯ:рдирдпрд╛"? рдпрд╛...)
@olalonde рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд░рд╕реНрддрд╛рд╡! рддрдм рдЖрдк npm рд╕реНрдХреНрд░рд┐рдкреНрдЯ "рд░рдЪрдирд╛" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ:
{
"knex": "babel-node node_modules/.bin/knex",
"migrate": "npm run knex -- migrate:latest --env ",
}
рд╢рд╛рдпрдж рдпрд╣ рднреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ: https://github.com/standard-things/esm
рдУрдПрд╕: рд╡рд┐рдВрдбреЛрдЬрд╝
рдмреЗрдмрд▓-рдХреНрд▓реА@6.26.0
[email protected]
// migrations/contacts.js
export function up (knex) {
return knex.schema
.createTable('contacts', table => {
table.increments('id').primary()
table.string('firstName')
table.string('lastName')
table.string('emailAddress')
})
}
export function down(knex) {
return knex.schema
.dropTable('contacts')
}
$ npx knex migrate:latest
Using environment: development
migrations/contacts.js:1
(function (exports, require, module, __filename, __dirname) { export function up (knex) {
^^^^^^
SyntaxError: Unexpected token export
at Object.exports.runInThisContext (vm.js:73:16)
at Module._compile (module.js:543:28)
...
$ npx babel-node node_modules/.bin/knex migrate:latest
./node_modules/.bin/knex:2
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
^^^^^^^
SyntaxError: missing ) after argument list
at Object.exports.runInThisContext (vm.js:73:16)
at Module._compile (module.js:543:28)
...
$ npx babel-node node_modules/knex/bin/cli.js migrate:latest
Using environment: development
Batch 1 run: 1 migrations
migrations/contacts.js
рдЬрдм рдореИрдВ @olalonde рдХреЗ рд╕реБрдЭрд╛рд╡ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ npm run knex migrate:make
, рдпрд╛ npm run knex
рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рдХреЗ рд╕рд╛рде, рдХреБрдЫ рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИред рдмрд╕ npm run knex
рдЪрд▓рд╛рдиреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред npm рдбреЙрдХреНрд╕ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрд░реНрдХреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ --
рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ npm run knex -- migrate:make
, рд▓реЗрдХрд┐рди рд╡рд╣ рдЕрднреА рднреА рдмрд┐рдирд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИред
* рдирд┐рдХреНрд╕ рдкрд░ рд░реАрдлрд╛рдИ (рддреЗрдЬ!) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдЙрдкрдирд╛рдо рд╕рдорд╛рдирд╛рд░реНрдереА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ!)
/*
npm install --save-dev reify
echo '.reify-cache/' >> .gitignore
alias knex='node -r reify ./node_modules/.bin/knex
knex migrate:latest # тАжetc
*/
const table = 'foo';
export const up = knex => {
return knex.schema.createTable(table, t => {
t.increments();
// тАжetc
t.timestamps();
});
};
export const down = knex => knex.schema.dropTable(table);
// OR
// export function up (knex) {
// return knex.schema.createTable(table, t => {
// t.increments();
// // тАжetc
// t.timestamps();
// });
// }
// export function down (knex) {
// knex.schema.dropTable(table);
// }
рдХреЛрдИ рднреА es6ifying knexfile.js рдкреНрд░рдпрд╛рд╕ рдмрджрд╕реВрд░рдд рд╣реИрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдореЙрдбреНрдпреВрд▓.рдПрдХреНрд╕рдкреЛрд░реНрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рд╡рд┐рд╕рдВрдЧрддрд┐ рдХреЗ рд╕рд╛рде рд░рд╣ рд╕рдХрддрд╛ рд╣реВрдВ
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рд╛рде No knexfile found in this directory. Specify a path with --knexfile
рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд░рд╣реЗрдВ:
// src/knexfile.js
import config from 'config'
export default {
debug: false,
settings: config.get('dbConfig'),
seeds: {
directory: './seeds/'
}
}
//package.json
"scripts": {
"knex": "babel-node node_modules/.bin/knex"
}
```
рдпрд╛рд░реНрди рдХреНрдиреЗрдХреНрд╕ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░реЗрдВ: рд▓реЛрд▓ рдмрдирд╛рдПрдВ
````
рдХреЛрдИ рд╕рдВрдХреЗрдд? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдбреАрдЖрдИрдЖрд░ рдореБрджреНрджрд╛ рд╣реИ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ)
@haywirez рдХреНрдпрд╛ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдпрд╣ рдЗрд╕ рдЯрд┐рдХрдЯ рдХреЗ рд╡рд┐рд╖рдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ?.. рд╡реИрд╕реЗ рднреА, рдареАрдХ рд╡рд╣реА рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬреЛ рдпрд╣ рдкреВрдЫ рд░рд╣рд╛ рд╣реИ, --knexfile рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдЖрдкрдХреЗ knexfile.js рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛
рдпрд╣ рд╕рдВрднрд╡ рд╣реИ @haywirez ' рд╕рдорд╕реНрдпрд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ export default { ... }
рдХреЛ ESM рдЗрдВрдЯрд░рдСрдк рдХреЗ рд▓рд┐рдП const file = require('/path/to/knexfile').default
рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓рд┐рдлреНрдЯрдСрдлрд╝, рдЬреИрд╕рд╛ рдХрд┐ рдХреНрдиреЗрдХреНрд╕ рдХреНрд▓реА рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, --require
рдзреНрд╡рдЬ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ esm
рдпрд╛ babel-register
рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрджреЗрд╢ рдХрдорд╛рдВрдбрд░ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рд╣реИ, esm
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рдж knex cli рдорд░ рдЬрд╛рддрд╛ рд╣реИ:
┬▒ |master ?:18 тЬЧ| тЖТ npx knex --require esm seed:make admin_user
Requiring external module esm
error: unknown option `--require'
рдХреНрдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рднреА рдЖрджреЗрд╢реЛрдВ рдкрд░ --require
рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде knexfile
рдкрд░ рдЗрдВрдЯрд░рдСрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП рдЦреБрд▓реА рд╣реЛрдЧреА?
https://github.com/tgriesser/knex/issues/1232#issuecomment -411775132 рдЖрдкрдХреЛ рдЙрдкрдирд╛рдо рдкрде рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП tsconfg-paths рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдЬреЛ рдмреАрдЬ w/ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред ts-рдиреЛрдб рдЙрдкрдирд╛рдо рдкрде рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдореИрдВ рдмреАрдЬ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдЬрдЯрд┐рд▓ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЕрдЧрд░ рд╣рдордиреЗ --require
рдзреНрд╡рдЬ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд┐рдпрд╛ рддреЛ рдореИрдВ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдпрджрд┐ рдЕрдиреНрдп рд▓реЛрдЧ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк --require
рдзреНрд╡рдЬ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
node -r tsconfig-paths/register node_modules/.bin/knex seed:run
@olalonde рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рдРрд╕реА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдЬрд╣рд╛рдВ рд╕рднреА рд▓реЛрдХрдкреНрд░рд┐рдп Node.js рд╕рдВрд╕реНрдХрд░рдг ES6 рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ?
@kibertoad рдиреЛрдб рдЕрднреА рддрдХ ESModules рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
@mAAdhaTTah рдпрд╣ рдереЛрдбрд╝реЗ рдХрд░рддрд╛ рд╣реИ: https://nodejs.org/api/esm.html
@kibertoad рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдФрд░ рдЕрд╕реНрдерд┐рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдпрджрд┐ рдЖрдк рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ esm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдЖрдЬрдорд╛рдПрдВ:
node -r esm node_modules/knex/bin/cli.js migrate:make migration_name
ред
Linux рдФрд░ Mac рдкрд░, рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ
node -r esm node_modules/.bin/knex migrate:make migration_name
рддреЛ рдЗрд╕ рдЯрд┐рдХрдЯ рдкрд░ рдореБрдЭреЗ рдЬреЛ рдЖрдЦрд┐рд░реА рдЕрдкрдбреЗрдЯ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ, рдЙрд╕рдореЗрдВ esm рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рдпрд╣ рдЖрдзреЗ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рдкреБрд░рд╛рдирд╛ рд╣реИ ... рдореИрдВ рдмреЗрдмреЗрд▓ рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрддреНрд╕реБрдХ рд╣реВрдВ, рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдмреЗрдмреЗрд▓-рдиреЛрдб рдХреЗ рдмрдЬрд╛рдп @ рдмреЗрдмреЗрд▓/рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдИ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред
@ рдорд╛рдЪрд┐рдирдШреЛрд╕реНрдЯ рдЖрдк рдирд╡реАрдирддрдо рдорд╛рд╕реНрдЯрд░ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдХрд┐рд╕реА рднреА рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рд╢реЗрд╖ рд╕реАрдорд╛ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред
рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдореЗрд░рд╛ package.json
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:
"knex": "npx @babel/node node_modules/.bin/knex --knexfile=src/database/knexfile.js",
"migrate": "npm run knex migrate:latest",
// ...
"dependencies": {
// ...
"knex": "git://github.com/tgriesser/knex.git#master",
// ...
рдФрд░ рдореЗрд░рд╛ knexfile.js
рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ:
import { development } from './realKnexFile';
module.exports = {
development
};
рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдореИрдВ npm run migrate
рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ:
knexfile.js:1
import { development } from './realKnexFile';
^
SyntaxError: Unexpected token {
at Module._compile (internal/modules/cjs/loader.js:760:23)
рдЕрджреНрднреБрдд "esm" рдореЙрдбреНрдпреВрд▓ (Lodash рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рд╕реЗ) рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХрд┐рд╕реА рдХреЛ рднреА рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП Babel рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рднреА Knex рдХреЛ ES6 рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕реБрдкрд░ рдЖрд╕рд╛рдиреА рд╕реЗ, рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ --require esm
рд╕реЗ node
рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред
рдпрджрд┐ knex
рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗрд╡рд▓ -r
рдФрд░ рдЗрд╕реЗ рдиреЛрдб рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреА рд╣реИ, рддреЛ рдпрд╣ рди рдХреЗрд╡рд▓ рдЗрд╕ рдЯрд┐рдХрдЯ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧреА рдмрд▓реНрдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдореБрджреНрджреЗ рдХреЛ рднреА рд╣рд▓ рдХрд░реЗрдЧреА рдЬрд╣рд╛рдВ рдХрд┐рд╕реА рдХреЛ Knex рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
-рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ-
рдЬрдм рддрдХ -r
рддрд░реНрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддрдм рддрдХ рдХреЛрдИ рднреА рд╕рднреА _required_ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ ES6 рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди knexfile.js
) рдРрд╕рд╛ рдХрд░рдХреЗ:
require = require("esm")(module);
const importedContent = require('./someFile.js');
рдпрд╣ require
рдХреЛ ES6 рдореЙрдбреНрдпреВрд▓ рдХреЛ рдареАрдХ рдХрд░ рджреЗрдЧрд╛ ... рд▓реЗрдХрд┐рди knexfile.js
рдЕрднреА рднреА require
рдФрд░ module.exports
; рдПрдХ -r
рд╡рд┐рдХрд▓реНрдк рдЗрд╕реЗ рд╣рд▓ рдХрд░реЗрдЧрд╛ред
рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐рд╕реА рдХреЛ рд▓рдЧ рд░рд╣реА рд╣реИ, рдпрд╣рд╛рдБ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░ рдПрдХ рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рд╣реИ рдИрдПрд╕рдПрдо Knex рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
knexfile.js
const config = {
}
// Knex will fail if you use "exports default"
module.exports = config
рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди
{
"scripts": {
"knex": "node -r esm node_modules/.bin/knex",
"db:migrate": "yarn knex migrate:latest"
}
}
ESM рдХреЗ рдЕрдзрд┐рдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рдореИрдВ Knex рдХреЛ Node>12 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдБред рдореБрдЭреЗ рдиреЛрдб рдореЗрдВ рдИрдПрд╕рдПрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЕрдиреБрднрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдЪрд▓реЗрдЧрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореИрдВ рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХрдм рд╢реБрд░реВ рдХрд░ рдкрд╛рдКрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХрд╛рдо рдХреЗ рдШрдВрдЯреЛрдВ рдХреЗ рджреМрд░рд╛рди рдЗрд╕ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ (рд╡реНрдпрд╛рдкрд╛рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ)ред рдореБрдЭреЗ knex рдХреЛрдбрдмреЗрд╕ рдХреЗ рдЖрджреА рд╣реЛрдиреЗ рдореЗрдВ рднреА рдПрдХ рдорд┐рдирдЯ рд▓рдЧрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирдИ рд▓рд╛рдЗрди рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ require('esm')
рдЬреЛрдбрд╝рдиреЗ рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ... рдЕрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓реЗрдЦрдХ рдирдИ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реИрдВред
@jhechtf @machineghost рдЗрд╕реЗ рджреЗрдЦреЗрдВ:
https://github.com/knex/knex/pull/3616
https://github.com/knex/knex/pull/3639
https://github.com/knex/knex/pull/3638
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд▓рд┐рдлрд╝реНрдЯрдСрдлрд╝ рд╕рдорд░реНрдерди рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЕрдзрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА рдХрд┐ рдХреНрдпрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВред
рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕ рд╕рдм рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рднреА рдХрд┐рд╕ рдХрд╛рдо (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред
рд╣рд╛рдБ, рдЖрдк рд▓реЛрдЧ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдиреЛрдб рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЧрдП, рдЬреЛ рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдХ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред
рдЖрдИрдПрдордПрдЪрдУ "рдПрдПрд╕рдПрдо" рдореЙрдбреНрдпреВрд▓ рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдзреНрд╡рдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА: рдпрд╣ рд╕рднреА рдиреЛрдб рдкрд░рд┐рд╡реЗрд╢реЛрдВ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдИрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓ рдмрдирд╛ рджреЗрдЧрд╛ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛ рдерд╛, рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде) .
рд▓реЛрджрд╢ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреА рдУрд░ рд╕реЗ рд╣реИ; рдЬреЗрдбреАрдбреА рдЪрдЯреНрдЯрд╛рдиреЛрдВред
@machineghost https://github.com/knex/knex/pull/3639 рдмреЗрдмреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХрд┐рд╕реА рдХреЛ esm
рдореЙрдбреНрдпреВрд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рджреЗрдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЕрдм рдкреАрдЖрд░ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред
рдЦреИрд░, рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рд╕реНрд░реЛрдд рд╣реИ;)
рдореИрдВ рдпрд╣ рдЦреЛрдЬ рдХреА рдереА рдФрд░ рдЗрд╕реЗ рджреВрд╕рд░реЛрдВ рдХреЛ рдпрд╣рд╛рдБ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА: https://stackoverflow.com/questions/47277887/node-experimental-modules-requested-module-does-not-provide-an-export-named/54302557#54302557
рдФрд░ рдЕрдм рдореБрдЭреЗ рд╣рд░ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЕрдкрд╡реЛрдЯ рдорд┐рд▓рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ESM рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░реАрди (рдпрдХреАрдирди рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ , рдЕрднреА) рд╕рдорд╛рдзрд╛рди рд╣реИред
@machineghost рдореМрдЬреВрджрд╛ рдХреЛрдбрдмреЗрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдк рдЗрд╕рдХреЗ рдкрд░рд┐рдЪрдп рдХреА рдХрд┐рддрдиреА рдШреБрд╕рдкреИрда рдХреА рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗ?
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ "рдЗрд╕рдХрд╛ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ" рд╕реМрджреЗред
рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдЖрдВрддрд░рд┐рдХ рднрд╛рдЧ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдореБрджрд╛рдп рдореЗрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рджреА рд╣реИ, рд╢рд╛рдпрдж рдЕрдЧрд░ рдХрд┐рд╕реА рдиреЗ @jdalton рд╕реЗ рдкреВрдЫрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реВрдЪрд┐рдд рд░рд╛рдп рдХреЗ рд╕рд╛рде?): crossed_fingers:
@machineghost рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдХреНрдпрд╛ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рд╛, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк https://github.com/knex/knex/pull/3616 рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ esm
рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕рдВрднрд╡рдд: рдЗрд╕реЗ рд╣рдЯрд╛рдирд╛ рдпрд╛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред
рдореЗрд░реЗ рдкрд╛рд╕ рдмреИрдВрдбрд╡рд┐рдбреНрде рдПрдЯреАрдПрдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдордп рдорд┐рд▓рдиреЗ рдкрд░ рдореИрдВ рджреЗрдЦ рд▓реВрдВрдЧрд╛ред рд╢рд╛рдпрдж @jhechtf рдЬрд▓реНрдж рд╣реА рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
рд╣рд╛рдБ, рдЖрдк рд▓реЛрдЧ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдиреЛрдб рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЧрдП, рдЬреЛ рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдХ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред
@machineghost : рд╣рдореНрдо... рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ --esm
рдзреНрд╡рдЬ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд esm
рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ:
https://github.com/knex/knex/blob/0f523db957138cc0423723c699c9ce52db5feb14/bin/cli.js#L52 -L55
рд╕рдВрдмрдВрдзрд┐рдд рдиреЛрдЯ рдкрд░: рдЖрдкрдиреЗ рдореБрдЭреЗ рдЕрднреА рдпрд╛рдж рджрд┐рд▓рд╛рдпрд╛ рдХрд┐ Liftoff
рдПрдиреНрд╣рд╛рдВрд╕рдореЗрдВрдЯ рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореЗрд░рд╛ рдорддрд▓рдм --require
рдзреНрд╡рдЬ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдерд╛ред рдореБрдЭреЗ рдЕрднреА рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП...
рдУрд╣, рдореЗрд░реА рдорд╛рдлрд╝реА! рдореИрдВ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рд╕реНрдХреИрди рдХрд░ рд░рд╣рд╛ рдерд╛, " node ${KNEX} --esm
" рджреЗрдЦрд╛, рдФрд░ рдмрд╕ рд╡рд╣рд╛рдВ рдЪрд░ рдХреЛ рджреЗрдЦрд╛ рдФрд░ рд╕реЛрдЪрд╛ рдХрд┐ рдЖрдк рдиреЛрдб рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдиреЛрдб рдХреЛ рдПрдХ рддрд░реНрдХ рдкрд╛рд╕ рдХрд░ рд░рд╣реЗ рдереЗред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╣реА рд╣рд▓ рдХрд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдореБрджреНрджреЗ рдХреЗ рдзрд╛рдЧреЗ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛; рдЕрдЪреНрдЫрд╛ рдХрд╛рдо: +1:
рдПрдирдкреА! рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреАрдЖрд░ рдореЗрдВ @D10221 рджреНрд╡рд╛рд░рд╛ рдлреАрдЪрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛:
https://github.com/knex/knex/pull/3616
рддреЛ, рд╡реЗ рд╢реНрд░реЗрдп рдХреЗ рдкрд╛рддреНрд░ рд╣реИрдВ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@jeremejevs рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ ... рд╕рд╛рде
рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╕рднреА Knex рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдП рдмрд┐рдирд╛ред