рдХреНрдиреЗрдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг: 0.16.3
рдбреЗрдЯрд╛рдмреЗрд╕ + рд╕рдВрд╕реНрдХрд░рдг: рдбреЙрдХрд░ postgres:10.4
рдУрдПрд╕: рд╡рд┐рдВрдбреЛрдЬ 10 рдкреНрд░реЛ рдФрд░ рдбреЙрдХрд░ node:8.14.0
knex migrate:make --knexfile knexfile.ts
Unexpected token import
рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ 0.15.x
рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
0.16 рдореЗрдВ рдЕрдм рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдХрд╛рд░ рд░реЗрдкреЛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рджреЗрдЦреЗрдВ #2845 )ред рдЗрд╕рдХреЗ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╢рд╛рдпрдж рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ @types/knex
рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ред
рдореИрдВрдиреЗ @types/knex
рд╕реНрдерд╛рдкрдирд╛ рд░рджреНрдж рдХрд░ рджреА рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред
/usr/src/app/src/db/knexfile.ts:1
(function (exports, require, module, __filename, __dirname) { import { database } from '../config'
^^^^^^
SyntaxError: Unexpected token import
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:617:28)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at initKnex (/usr/src/app/node_modules/knex/bin/cli.js:62:25)
at Command.commander.command.description.option.action (/usr/src/app/node_modules/knex/bin/cli.js:172:24)
at Command.listener (/usr/src/app/node_modules/commander/index.js:315:8)
at emitTwo (events.js:126:13)
at Command.emit (events.js:214:7)
at Command.parseArgs (/usr/src/app/node_modules/commander/index.js:654:12)
at Command.parse (/usr/src/app/node_modules/commander/index.js:474:21)
knex migrate:make --knexfile knexfile.ts
рдХреНрдпрд╛ рдпрд╣ рд╕рд╛рджрд╛ рдиреЛрдб рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ? рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ 0.15 рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
рдЖрдкрдХрд╛ рдиреЗрдХреНрд╕рдлрд╛рдЗрд▓ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдХреЛрдИ рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рд╣реИ?
import * as knex from 'knex'
import * as path from 'path'
import { env } from './env'
const database = {
client: 'postgresql',
connection: env.databaseUrl,
migrations: {
directory: path.resolve('../db/migrations'),
tableName: 'knex_migrations',
},
seeds: {
directory: path.resolve('../db/seeds'),
},
} as knex.Config
export = database
0.15
рдкрд░ 100% рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ 0.15 рдХреЗ рд╕рд╛рде рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЪреВрдВрдХрд┐ рддреНрд░реБрдЯрд┐ Unexpected token import
рдЖрдкрдХреЛ рдмрддрд╛рддреА рд╣реИ, import * as knex from 'knex'
Node.js рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдЙрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд╣реАрдВ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред
рдЖрдкрдХреЛ рдпрд╛ рддреЛ рдЕрдкрдиреЗ knexfile рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдПрдХ Node.js рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЖрдпрд╛рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ https://nodejs.org/api/esm.html ), рдпрд╛ рдкреБрд░рд╛рдиреЗ require()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдПрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ knex реж.резрел рдореЗрдВ рдПрдХ рдмрдЧ рдерд╛ рддрд╛рдХрд┐ рд╡рд╣ рдЙрд╕ knexfile рдХреЛ рдХрднреА рди рдкрдврд╝реЗред 0.16 рдореЗрдВ рдмрдЧ рдХреА рддрд░рд╣ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ рдЬреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рддрд╛рдХрд┐ рд╡рд╣ рдЙрд╕ knexfile рдХреЛ рдХрднреА рди рдкрдврд╝реЗрдВ
рдпрд╣ 100% knexfile рдкрдврд╝рддрд╛ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ (рдореЗрд░реЗ рд╕рд┐рд░ рдХреЗ рдКрдкрд░ рд╕реЗ рдореИрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ 4 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ) рд╡рд┐рднрд┐рдиреНрди рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдФрд░ рдХрдиреЗрдХреНрд╢рди рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рдеред
рд╕рдВрд╕реНрдХрд░рдг 0.15
рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ ts-node
рдХрд╛ рд╕рдВрдХрд▓рди рдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ ... рдЖрдк рд╕рд╣реА рд╣реИрдВ, рджреЛрдиреЛрдВ рд╕рдВрд╕реНрдХрд░рдг рдЯреАрдПрд╕-рдиреЛрдб рд╕рд╛рдорд╛рди рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рдЕрдЧрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рднреАред
рдирд╣реАрдВ... рдЕрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдиреЛрдб 8 рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдЖрд╡рд╢реНрдпрдХ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ
Mikaels-MacBook-Pro-2:test mikaelle$ npm install [email protected] ts-node-register
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
+ [email protected]
+ [email protected]
updated 2 packages and audited 1037 packages in 2.135s
found 0 vulnerabilities
Mikaels-MacBook-Pro-2:test mikaelle$ echo "import * as knex from 'knex'; export = {client: 'pg'}" > knexfile.ts
Mikaels-MacBook-Pro-2:test mikaelle$ node_modules/.bin/knex migrate:make --knexfile knexfile.ts -x ts foo
Failed to load external module ts-node/register
Failed to load external module typescript-node/register
Failed to load external module typescript-register
Failed to load external module typescript-require
Failed to load external module @babel/register
/Users/mikaelle/Projects/Vincit/yessql/dodo-objection/test/knexfile.ts:1
(function (exports, require, module, __filename, __dirname) { import * as knex from 'knex'; export = {client: 'pg'}
^^^^^^
SyntaxError: Unexpected token import
рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ knex рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдмреАрдЬреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ts-node рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ 0.15 рдкрд░ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ 0.16 рдкрд░ рдирд╣реАрдВ, рддреЛ рдореИрдВрдиреЗ рдПрдХ рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ
рд╢рд╛рдЦрд╛: knex16
рдореЗрдВ 0.16.3
рд╕реНрдерд╛рдкрд┐рдд рд╣реИ
https://github.com/brunolm/knex16bug/tree/knex16
рд╢рд╛рдЦрд╛: knex15
рдореЗрдВ 0.15.2
рд╕реНрдерд╛рдкрд┐рдд рд╣реИ
https://github.com/brunolm/knex16bug/tree/knex15
рдЙрд╕ рд╢рд╛рдЦрд╛ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдЖрдк рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдВрдЪрдирд╛ рдФрд░ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
docker-compose up
рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЛ test
рдореЗрдВ /api/src/db/migrations
test
рдирд╛рдордХ рдПрдХ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП
рдХреБрдЫ рдФрд░ рдкреИрдХреЗрдЬ (рдЯреАрдПрд╕-рдиреЛрдб рдЯреАрдПрд╕-рдиреЛрдб-рджреЗрд╡ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ) рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ, 0.15 рдФрд░ 0.16 рдпрд╣рд╛рдВ рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ ... рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдиреЛрдб 0.16 рдХреЗ рд╕рд╛рде рдЖрдкрдХрд╛ рдбреЙрдХрдЯрд░ рд╕реЗрдЯрдЕрдк рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпреЛрдВ
Mikaels-MacBook-Pro-2:test mikaelle$ rm -fr node_modules/*
Mikaels-MacBook-Pro-2:test mikaelle$ npm install knex typescript ts-node
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
+ [email protected]
+ [email protected]
+ [email protected]
added 295 packages from 184 contributors and audited 1213 packages in 6.59s
found 0 vulnerabilities
Mikaels-MacBook-Pro-2:test mikaelle$ node_modules/.bin/knex migrate:make --knexfile knexfile.ts test
Requiring external module ts-node/register
Created Migration: /xxx/migrations/20190119003358_test.js
Mikaels-MacBook-Pro-2:test mikaelle$ cat knexfile.ts
import * as knex from 'knex'; export = {client: 'pg'}
Mikaels-MacBook-Pro-2:test mikaelle$
рдореИрдВрдиреЗ рдЖрдкрдХреЗ docker-compose.yml рдХреЛ рдХрд╛рдлреА рд╕рдорд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ:
version: '3'
services:
api:
image: node:8.14.0
command: bash -c 'rm -fr api/node_modules; npm i knex ts-node typescript; node_modules/.bin/knex migrate:make --knexfile ./src/db/knexfile.ts test'
working_dir: /usr/src/app
volumes:
- ./api:/usr/src/app
api_1 | npm WARN [email protected] No repository field.
api_1 |
api_1 | + [email protected]
api_1 | + [email protected]
api_1 | + [email protected]
api_1 | updated 3 packages and audited 1176 packages in 9.804s
api_1 | found 0 vulnerabilities
api_1 |
api_1 | /usr/src/app/src/db/knexfile.ts:1
api_1 | (function (exports, require, module, __filename, __dirname) { import { database } from '../config'
api_1 | ^^^^^^
api_1 |
рдЕрдЧрд░ рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ knexfile рдХреЛ /usr/src/app рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ рддреЛ рдЙрд╕рдиреЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ ... рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдкреБрди: рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рднрд▓реЗ рд╣реА knexfile.ts рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдЕрдВрджрд░ рд╣реЛ...
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╢рд╛рдпрдж 0.16 рдкрд░ рдПрдХ рдмрдЧ рдорд┐рд▓рд╛, рдпрд╛ рдмрд╕ рдХреБрдЫ рдЕрдЬреАрдмред
0.15 рдкрд░ launch
рдХреЛ configPath
рд╕рд╛рде рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
https://github.com/tgriesser/knex/blob/0.15.2/bin/cli.js#L260
рд▓реЗрдХрд┐рди 0.16 рдкрд░ рдЗрд╕реЗ with . рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
knexfile: argv.knexfile,
knexpath: argv.knexpath,
https://github.com/tgriesser/knex/blob/0.16.3/bin/cli.js#L303 -L304
рд▓рд┐рдлрд╝реНрдЯрдСрдлрд╝ var env = this.buildEnvironment(opts);
рдкрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ findConfig({
рдкрд╛рд╕рд┐рдВрдЧ configPath
(рдЬреЛ рдЕрдм рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ configPath
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ knexfile
рдпрд╛ knexpath
рдХреЛрдИ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ typescript
рдФрд░ ts-node
рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рдФрд░ рдпрд╣ рддрдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ v0.15 рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЧрд┐рдЯ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдкрд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИред
рдореИрдВрдиреЗ рдХреБрдЫ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреА рдФрд░ рдЗрд╕реЗ рдкрд╛рдпрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ 0.15 . рдкрд░ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
[email protected]
рдЗрд╕ рд▓рд╛рдЗрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд▓реЙрдЧ рдХрд░рдирд╛
var config = require(env.configPath);
https://github.com/tgriesser/knex/blob/0.15.2/bin/cli.js#L55
рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛
api_1 | require(/usr/src/app/src/db/knexfile.ts)------------ { client: 'postgresql',
api_1 | connection: 'postgres://user:password@db/api-db',
api_1 | migrations:
api_1 | { directory: '/usr/src/app/src/db/migrations1337',
api_1 | tableName: 'knex_migrations' },
api_1 | seeds: { directory: '/usr/src/app/src/db/seeds' } }
api_1 | this.config { extension: 'js',
api_1 | loadExtensions:
api_1 | [ '.co',
api_1 | '.coffee',
api_1 | '.eg',
api_1 | '.iced',
api_1 | '.js',
api_1 | '.litcoffee',
api_1 | '.ls',
api_1 | '.ts' ],
api_1 | tableName: 'knex_migrations',
api_1 | schemaName: null,
api_1 | directory: '/usr/src/app/src/db/migrations1337',
api_1 | disableTransactions: false }
рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╣ рд░рд╣реА рд╣реИ directory: '/usr/src/app/src/db/migrations1337',
, рдЬреЛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ knexfile.ts . рдкрд░ рд╣реИ
рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдлрд╛рдЗрд▓ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИ .ts
require('/usr/src/app/src/db/knexfile.ts')
[email protected]
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдареАрдХ рдЙрд╕реА рдлрд╝рд╛рдЗрд▓ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ
// /usr/src/app/src/db/knexfile.ts
env.configuration = require(resolvedKnexfilePath);
[email protected]
рдореИрдВрдиреЗ typescript
рдФрд░ ts-node
рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЕрдм рдореБрдЭреЗ рдпрд╣ рдорд┐рд▓рддрд╛ рд╣реИ:
api_1 | Failed to load external module ts-node/register
api_1 | Failed to load external module typescript-node/register
api_1 | Failed to load external module typescript-register
api_1 | Failed to load external module typescript-require
api_1 | Failed to load external module @babel/register
cli.on('requireFail', function(name) {
console.log(chalk.red('Failed to load external module'), chalk.magenta(name));
});
https://github.com/tgriesser/knex/blob/0.15.2/bin/cli.js#L254
рдореБрдЭреЗ рдпрд╣ рд╕рдВрджреЗрд╢ 16 рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдмрд╕ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред
@elhigu рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдордЭ рд▓рд┐рдпрд╛, рдореИрдВрдиреЗ рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдпрд╛, рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ?
https://github.com/tgriesser/knex/pull/3005
рдЗрд╕рдХреЗ рдмрд╛рдж рд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рд╢рд╛рдпрдж рдХрд╣реАрдВ рдПрдХ рдмрдЧ рд╣реИ ... рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕реЗ рдУрдПрд╕рдПрдХреНрд╕ рдкрд░ рдХреИрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПред
FYI рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдмреНрд░реВрдиреЛрд▓рдо рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдпрд╛ рдФрд░ knex 0.15.2 рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдмрдХрд┐ knex 0.16.3 рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
@scorbin рд╣рд╛рдБ, рдореИрдВ рдЙрд╕реЗ рднреА
рдпрд╣рд╛рдБ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ (рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд╛рдЗрдЧреНрд░реЗрд╢рди + 0.16.3)ред
рдЬрдм Migrator#latest
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреА рд╢реБрд░реБрдЖрдд migrationListResolver#listAllAndCompleted
рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ listAll(config.migrationSource)
рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ migrationSource
рдореЗрдВ loadExtensions = [".co", ".coffee", ".eg", ".iced", ".js", ".litcoffee", ".ls", ".ts"]
, рднрд▓реЗ рд╣реА рдореИрдВ { тАж, loadExtensions: ['.js'], тАж }
рдкреНрд░рд╡рд╛рд╕реА рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ .ts
рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ .js
рджреЛрдиреЛрдВ рдХреЛ рдЪреБрдирддрд╛ рд╣реИ рдФрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ .ts
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╛рд╣рд┐рд░ рд╣реИ), рдЬреЛ ... рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм #getMigration
рдХреЛ рдЕрдВрддрддрдГ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде #require
рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ)ред
рдЙрдореНрдореАрдж рд╣реИ рдпреЗ рдорджрдж рдХрд░реЗрдЧрд╛...
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдереЛрдбрд╝реЗ рд╕реЗ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде, рдЪреАрдЬреЗрдВ рд╡рд╛рдкрд╕ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛрдиреЗ рд▓рдЧрддреА рд╣реИрдВ:
function listAllAndCompleted(config, trxOrKnex) {
return _bluebird.default.all([listAll(config.migrationSource, config.loadExtensions), listCompleted(config.tableName, config.schemaName, trxOrKnex)]);
}
рдореИрдВрдиреЗ рдпрд╣ рдорд╛рдиреНрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдкреНрд░рд╡рд╛рд╕реА рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╕рд╛рде 100% рдЕрдиреБрд░реВрдк рд╣реИ - рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рд╕реЗ рдПрдХ рдФрд░ рдЬрд╛рдирдХрд╛рд░ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛! :)
рдореБрдЭреЗ рдХреНрдиреЗрдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг 0.16.3
рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рдерд╛ред
import * as Knex from 'knex';
^^^^^^
SyntaxError: Unexpected token import
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:617:28)
at Object.Module._extensions..js (module.js:664:10)
рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ ts-node/register
knexfile.ts
рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ
require('ts-node/register');
//
0.16.4-рдЕрдЧрд▓реЗ2 . рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рдмрд╕ 0.16.4-рдЕрдЧрд▓рд╛ 2 рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рд╡рд╣реА рддреНрд░реБрдЯрд┐ рджреЗрдЦрдХрд░ рджреБрдЦ рд╣реБрдЖ
@brunolm рдХреНрдпрд╛ рдЖрдк рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ 0.16.4-рдЕрдЧрд▓рд╛ 2 рдЕрднреА рднреА рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ?
@pvoisin рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП 0.16.4-рдЕрдЧрд▓рд╛ 2 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
@kibertoad рдореБрдЭреЗ 0.16.4-next2 рдкрд░ рдареАрдХ рд╡реИрд╕реА рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред
рдареАрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕реЗ knexfile рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдП
рдореИрдВ рдорд░реЗ рд╣реБрдП рдШреЛрдбрд╝реЗ рдХреЛ рд╣рд░рд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛, рд▓реЗрдХрд┐рди @kibertoad рдиреЗ рдХрд╣рд╛ рдХрд┐ рдЗрд╕реЗ
@juliancoleman рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрд┐рдХреНрд╕ рдореЗрдВ рд░рд┐рдЧреНрд░реЗрд╢рди рдЯреЗрд╕реНрдЯ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ (рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдерд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╕реАрдЖрдИ рдПрдирд╡реА рдкрд░ рдЕрд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ)ред
рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдЪрд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдкреАрдЫреЗ рдореБрдбрд╝рдХрд░ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд╕рд╣рд┐рдд рдХрд┐рд╕реА рдиреЗ рднреА рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрджрдо рдирд╣реАрдВ рдЬреЛрдбрд╝реЗ рд╣реИрдВред
[email protected]
рдЬреЛрдбрд╝реЗрдВknexfile.ts
рдмрдирд╛рдПрдВModel.knex
рдкрд░ рддрддреНрдХрд╛рд▓ knex рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдиpackage.json
"knex": "knex --knexfile ./path/to/Knexfile.ts"
yarn knex migrate:latest
SyntaxError
рдореЗрдВ рдЪрд▓рд╛рдПрдБрдореИрдВрдиреЗ рдЗрди рдЪрд░рдгреЛрдВ рдХреЛ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рджреВрд╕рд░реЗ рджрд┐рди рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛, рдЬреЛ рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд▓реЗ рдЖрдпрд╛
"knex": "^0.16.4-next2",
git clone [email protected]:brunolm/knex16bug.git
cd knex16bug
git checkout knex16
npm run api-i
docker-compose up
api_1 | > knex migrate:make --knexfile ./src/db/knexfile.ts "test"
api_1 |
api_1 | /usr/src/app/src/db/knexfile.ts:1
api_1 | (function (exports, require, module, __filename, __dirname) { import { database } from '../config'
api_1 | ^^^^^^
api_1 |
api_1 | SyntaxError: Unexpected token import
api_1 | at createScript (vm.js:80:10)
api_1 | at Object.runInThisContext (vm.js:139:10)
api_1 | at Module._compile (module.js:617:28)
api_1 | at Object.Module._extensions..js (module.js:664:10)
api_1 | at Module.load (module.js:566:32)
api_1 | at tryModuleLoad (module.js:506:12)
api_1 | at Function.Module._load (module.js:498:3)
api_1 | at Module.require (module.js:597:17)
api_1 | at require (internal/module.js:11:18)
api_1 | at initKnex (/usr/src/app/node_modules/knex/bin/cli.js:62:25)
api_1 | at Command.commander.command.description.option.action (/usr/src/app/node_modules/knex/bin/cli.js:172:24)
api_1 | at Command.listener (/usr/src/app/node_modules/commander/index.js:315:8)
api_1 | at emitTwo (events.js:126:13)
api_1 | at Command.emit (events.js:214:7)
api_1 | at Command.parseArgs (/usr/src/app/node_modules/commander/index.js:654:12)
api_1 | at Command.parse (/usr/src/app/node_modules/commander/index.js:474:21)
api_1 | npm ERR! code ELIFECYCLE
api_1 | npm ERR! errno 1
api_1 | npm ERR! [email protected] migrate-make: `knex migrate:make --knexfile ./src/db/knexfile.ts "test"`
api_1 | npm ERR! Exit status 1
api_1 | npm ERR!
api_1 | npm ERR! Failed at the [email protected] migrate-make script.
api_1 | npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
api_1 |
api_1 | npm ERR! A complete log of this run can be found in:
api_1 | npm ERR! /root/.npm/_logs/2019-03-18T21_39_10_408Z-debug.log
рдореЗрд░рд╛ рдкреАрдЖрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдЬреНрдЮрд╛рди рдирд╣реАрдВ рд╣реИ, рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ ...
рдореИрдВ рдорд░реЗ рд╣реБрдП рдШреЛрдбрд╝реЗ рдХреЛ рдкреАрдЯрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛, рд▓реЗрдХрд┐рди @kibertoad рдиреЗ рдХрд╣рд╛ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдлрд┐рдХреНрд╕ рдХрд╛ рд╕рдмреВрдд рдХрд╣рд╛рдВ рдерд╛? рдХреНрдпрд╛ рдкреНрд░рддрд┐рдЧрдорди рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ? рдпрд╣ рдХрд╣рдирд╛ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдирд╛, рдФрд░ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдореМрдЬреВрдж рд╣реЛрдирд╛, рд░рд┐рд▓реАрдЬ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред
рдореИрдВ рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВ, рдпрд╣рд╛рдВ рдПрдореНрд╕реНрдЯрд░реНрдбрдо рдореЗрдВ рджреЗрд░ рд╣реЛ рдЪреБрдХреА рдереА рдФрд░ рдореЗрд░реЗ рд╢рдмреНрджреЛрдВ рдХрд╛ рдЪреБрдирд╛рд╡ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдерд╛ред рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ "рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ 0.16.4-рдЕрдЧрд▓рд╛ 2 рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ", рдЬреИрд╕рд╛ рдХрд┐ рдЯреАрдмреАрдПрдЪ, рдЕрдЧрд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рддреЛ рдореБрдЭреЗ рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрддрд╛ред рдПрдХ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдлрд┐рдХреНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдм рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдореИрдВ рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛, рдФрд░ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдпрд╣ рдкрд╣рд▓реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рдерд╛ knexfile рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдХреЗ рд╣реИред рдпрд╣ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕реБрдзрд╛рд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдХреБрдЫ рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдБ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдЕрд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБред рдмрд╕ рдореБрдЭреЗ рдХреБрдЫ рд╕рдордп рджреЛред рдЗрд╕ рдмреАрдЪ, ts-node рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ - рдХреЛрдИ рдпрд╣ рддрд░реНрдХ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ knexfile рдкрд░ рдирд┐рд░реНрднрд░ рди рд╣реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рд╣реИрдХреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдЪреНрдЪрд╛рдИ рдХреЗ рдПрдХрд▓ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ knexfile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
@kibertoad
рдФрд░ рдПрдХ рд╣реА рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рдерд╛, рд╡рд╣ рд╣реИ knexfile рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдирд╛ред
рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИ, рдореЗрд░реА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рджреЗрдЦреЗрдВред рд╕рдм рдХреБрдЫ 0.15 рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
@brunolm рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдк рддрдХрдиреАрдХреА рд╕реНрддрд░ рдкрд░ рд╕рдордЭрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрд╛рд▓реНрдкрдирд┐рдХ рд░реВрдк рд╕реЗ рднреА рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп Node.js рдХреИрд╕реЗ рдЪреЛрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдореИрдВ рдкреАрдЖрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реВрдБрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдВрддрддрдГ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдзреНрдпрдореЛрдВ рд╕реЗ) - knexfile рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
@kibertoad рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ ts-node рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рддрдХрдиреАрдХреА рд╕реНрддрд░ рдкрд░ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ
рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рд╕реНрд░реЛрдд рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реЛрддрд╛, рддреЛ рдореИрдВ рд╣реЛрддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдХреНрдиреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВ рд╡рд╛рдкрд╕ 0.15 рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ... рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ , рдмрд┐рд▓реНрдХреБрд▓
@brunolm рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдк рддрдХрдиреАрдХреА рд╕реНрддрд░ рдкрд░ рд╕рдордЭрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрд╛рд▓реНрдкрдирд┐рдХ рд░реВрдк рд╕реЗ рднреА рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп Node.js рдХреИрд╕реЗ рдЪреЛрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдореИрдВ рдкреАрдЖрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реВрдБрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдВрддрддрдГ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдзреНрдпрдореЛрдВ рд╕реЗ) - knexfile рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрд╕реЗ knex 0.15
рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, knexfile.ts рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирдЬрд╝рд░рдЕрдВрджрд╛рдЬрд╝ рди рдХрд░рддреЗ рд╣реБрдП
git clone [email protected]:brunolm/knex16bug.git
cd knex16bug
git checkout knex15
npm run api-i
docker-compose up
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрджрд┐ рдЖрдк рдареАрдХ рд╡рд╣реА рдЪреАрдЬрд╝ knex 0.16
рдкрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдХреНрд▓реЛрди рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рдПрдХ рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреНрд▓реЛрдирд┐рдВрдЧ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХреЗрдВ рдХрд┐ рдЖрдк рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╣реИрдВ
git clone [email protected]:brunolm/knex16bug.git
cd knex16bug
git checkout knex16
npm run api-i
docker-compose up
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ @brunolm рдХреЗ рдЙрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдерд╛, рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрднреА рднреА рдкреНрд░рдЬрдирди рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рдмрдирд╛ рдореИрдХреЛрдЬрд╝ рдкрд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдбреЙрдХрдЯрд░ рд╕реЗрдЯрдЕрдк рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред
рддреЛ рд╕рдорд╕реНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ knex CI рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧреА, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 0.16 рдкрд░ рднреА рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ 0.15 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИред рдЪреВрдВрдХрд┐ рд╕реАрдЖрдИ рдХреБрдЫ рдкреБрд░рд╛рдиреЗ рдЙрдмрдВрдЯреВ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдЕрд░реНрде рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ) рдареАрдХ рд╣реИред
рдореЗрд░реА рдУрд░ рд╕реЗ рддреНрд╡рд░рд┐рдд рдЕрдкрдбреЗрдЯред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ tsconfig.json
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ knex
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЬрдм рдореИрдВ рд╕реАрдзреЗ рд╢реБрд░реВ рдХрд░рдХреЗ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ overrode knex
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ ts-node
, рдореИрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдореЗрд░рд╛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ package.json
:
// ...
"knex": "ts-node --project tsconfig.server.json $(npm bin)/knex --knexfile ./src/server/knexfile.ts",
// ...
рдореИрдВ рдЕрдм рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреИрд╕реЗ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ:
npm run knex -- migrate:latest
рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИред
@FindAPattern рдХреНрдпрд╛ рдЖрдк рдЕрдкрдирд╛ tsconfig рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ? рдпреЗ рдореЗрд░рд╛ред рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ ts-node
рд╕рд╛рде рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
{
"compilerOptions": {
"noEmit": true,
"rootDir": "src",
"target": "es6",
"module": "commonjs",
"moduleResolution": "node",
"declaration": true,
"inlineSourceMap": true,
"resolveJsonModule": true,
},
"include": [
"src/**/*.ts",
],
"exclude": [
"src/**/*.spec.ts"
]
}
рдирдорд╕реНрддреЗ! рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рд╣реБрдИ рд╣реИ?
@brunolm рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреЛрдИ рдЙрдкрд╛рдп?
@algil рдореБрдЭреЗ рдЕрднреА рддрдХ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрднреА рднреА рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП 0.15 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЖрдк knex рдХреЛ рдлреЛрд░реНрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/tgriesser/knex/pull/3005
рдпрд╣ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗред рдореИрдВ рдПрдХ рд╕реБрдзрд╛рд░ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ рдЬреЛ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред tsconfig.json "рдореЙрдбреНрдпреВрд▓" рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рдордп рдлрд┐рдХреНрд╕реНрдб: "es2015" рд╕реЗ "рдореЙрдбреНрдпреВрд▓": "commonjs"
package.json => "migrate" рдореЗрдВ рдХрдорд╛рдВрдб: "ts-node -P ./tsconfig.json node_modules/.bin/knex рдорд╛рдЗрдЧреНрд░реЗрдЯ:latest --knexfile knexfile.ts"ред
рд╢рд╛рдпрдж рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред tsconfig.json "рдореЙрдбреНрдпреВрд▓" рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рдордп рдлрд┐рдХреНрд╕реНрдб: "es2015" рд╕реЗ "рдореЙрдбреНрдпреВрд▓": "commonjs"
package.json => "migrate" рдореЗрдВ рдХрдорд╛рдВрдб: "ts-node -P ./tsconfig.json node_modules/.bin/knex рдорд╛рдЗрдЧреНрд░реЗрдЯ:latest --knexfile knexfile.ts"ред
рдЗрд╖реНрдЯрддрдо рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
@Areshetcov @Meldiron рдореИрдВ commonjs
рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдКрдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреЛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдПрдХ рдЧрд╣рд░рд╛ рд╕рдорд░реНрдерди рд╣реИ, рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдПрдХ рдЯрди рд╣реЛред рдЬрдм рддрдХ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ
рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд┐рд╕реА рд░рд┐рд▓реАрдЬрд╝ рд╕реЗ рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдЬреЛ рдЕрдм рдкреАрдЫреЗ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ 0.17.6
рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ?
@juliancoleman ts- рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрднреА рднреА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ knex рдЕрднреА рднреА knexfile.js рдЦреЛрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд╣реИ рддреЛ рд╡рд┐рд╕реНрдлреЛрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдзрд┐рдХ рдорд╛рдорд▓реЛрдВ рдореЗрдВ TS рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рдврдВрдЧ рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реБрдЖ рдерд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЬрдирд░реЗрд╢рди рдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдерд╛рди рдкрд░ knexfile рдХреЛ рд╣рд▓ рдХрд░рдирд╛)ред рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреМрди рд╕рд╛ рд╡рд┐рд╢реЗрд╖ рдореБрджреНрджрд╛ рд╣реИ?
рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдореЗрдВ рдЗрд╕ рдкрд░ рдПрдХ рдФрд░ рд╕реНрд╡рд┐рдВрдЧ рд▓реЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдВ рдХрдо рд╕реЗ рдХрдо рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЕрддреАрдд рдореЗрдВ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдбреА
рдЬрдм рдореИрдВрдиреЗ рд╡рд╣ рдкреАрдЖрд░ рдмрдирд╛рдпрд╛ рддреЛ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рди рдХреЗрд╡рд▓ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде, рдмрд▓реНрдХрд┐ рдмреЗрдмреЗрд▓ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдПрдХ рдкреИрдХреЗрдЬ рд╣реИ рдЬреЛ рдпрд╣ рд╕рдм рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ - рдЕрдЧрд░ рдореБрдЭреЗ рд╕рд╣реА рд╕реЗ рдпрд╛рдж рд╣реИред
рдореЗрд░реЗ рдкреАрдЖрд░ рдореЗрдВ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд╕рдВрдХреЗрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/tgriesser/knex/pull/3005/files
рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ npm run knex migrate:latest
рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ unexpected token '{'
ред рдореИрдВ рдХреЗрд╡рд▓ рдЗрд╕ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЯреАрдПрд╕-рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдмрдВрдбрд▓рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рдЪрд▓рд╛рддрд╛ рдФрд░ рдореИрдВ TS рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ред рдпрд╣ рд╢рд╛рдпрдж _do_ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рдореИрдВ рдпрд╣реА рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреГрддреАрдп-рдкрдХреНрд╖ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрд╣реАрдВ рдФрд░ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рд╣реИ, рди рдХрд┐ рдХреЗрд╡рд▓ Knex рдХреЗ рд╕рд╛рде
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреГрддреАрдп-рдкрдХреНрд╖ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ ts-node
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ require()
рд╕рд╛рде рд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдорд╛рдЗрдЧреНрд░реЗрдЯрд░ рдЙрди рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП require()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ...
рдЕрдЧрд░ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рддреЛ рдмрд╕ рдпрд╣рд╛рдВ рдЪрд┐рд▓реНрд▓рд╛ рд░рд╣рд╛ рд╣реИ: рдореЗрд░реЗ рдкрд╛рд╕ [email protected]
рдФрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ * knex --knexfile src/knexfile.ts
рдЬреЛ рдЕрд╕рдлрд▓ рд░рд╣рд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЬреЗрдПрд╕ рдХреЗ рд░реВрдк рдореЗрдВ knexfile рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред knex --cwd src
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЗрд░рд╛рджрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
*) рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдорд╛рдВрдбрд▓рд╛рдЗрди node -r dotenv/config node_modules/knex/bin/cli [...]
рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред
@ilkka рдХреНрдпрд╛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ "рдЗрдЪреНрдЫрд┐рдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ" рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ? рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЖрдк node
рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ рди рдХрд┐ ts-node
, рдпрд╣ Knex knexfile.ts рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реИ, рдпрд╣ Node. рдЬрдм рддрдХ рдЖрдкрдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдЧрд▓рдд рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
рдХреНрдпрд╛ knex --cwd src
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рд╢реНрди рдореЗрдВ knexfile рдЦреЛрд▓рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ?
рдЖрд╣, рдореБрдЭреЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдЬрдм рдореИрдВ рдЕрдкрдиреА npm рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ knex рдЪрд▓рд╛рддреЗ рд╕рдордп --cwd
рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ "рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ ts-рдиреЛрдб/рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛" рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдореЗрд░реЗ knexfile рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рдФрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд╣реА рд╣реИ рдпрджрд┐ рдореИрдВ рдЗрд╕реЗ npx knex
рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдПрдХ npm рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд╣рд░ред
@ilkka рджрд┐рд▓рдЪрд╕реНрдкред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдиреЗрдХреНрд╕ рдХрднреА рднреА рдЯреАрдПрд╕-рдиреЛрдб рдХреЛ рдЕрдкрдиреЗ рдЖрдк рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╕реНрдЯреИрдХ рд╕реЗ рдХреБрдЫ рдФрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдкрд╣рдЪрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдордиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд┐рдпрд╛ред
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ cli.js
рджреНрд╡рд╛рд░рд╛ рд╣реИ , рдЬреЛ рдПрдХ рд▓рд┐рдлреНрдЯрдСрдл рдШрдЯрдирд╛ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ (рдкрд╣рд▓реЗ 'рдЖрд╡рд╢реНрдпрдХрддрд╛' рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ рд▓рд┐рдлреНрдЯрдСрдлрд╝ рдореЗрдВ рдХреБрдЫ рдФрд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рд▓рд┐рдлреНрдЯрдСрдлрд╝ рдмрджрд▓реЗ рдореЗрдВ рд▓реЛрдбрд░ рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд░реЗрдХреЛрдЗрд░" рдирд╛рдордХ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд░реАрдХреЛрдЗрд░ рдХреЗ рд░реАрдбрдореЗ рдореЗрдВ рдпрд╣ рдиреЛрдЯ рд╣реИ рдХрд┐ рдпрд╣ " coffee-script
рдЬреИрд╕реЗ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдб рдФрд░ рдкрдВрдЬреАрдХреГрдд рдХреИрд╕реЗ рдХрд░реЗрдЧрд╛"ред рддреЛ ... рд╢рд╛рдпрдж рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдореЗрд░реЗ рдкрде рдореЗрдВ ts-node
рд╣реЛрдирд╛ рд╣реА рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ? рдпрд╣ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓реА рд╣реИред
рд╡реИрд╕реЗ рднреА, рдЕрдм рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рд╣рдо рдЕрдкрдиреА npm рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ node
рдХреЛ ts-node
рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рдереЗ рдФрд░ рдпрд╣ рдХрд╛рдо рднреА рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд▓рд┐рдлреНрдЯрдСрдл рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ: рдбреА
рд▓реЗрдХрд┐рди рд╣рд╛рдБ, рдЯреАрдПрд╕-рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзреЗ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдереАред рдирд┐рдХрд▓рд╛ рдореИрдВрдиреЗ рдЧрд▓рдд tsconfig.json
рдХреЙрдкреА рдХрд┐рдпрд╛ рд╣реИред рдЕрдм рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╡рд┐рдиреНрдпрд╛рд╕:
package.json (рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░)
"scripts": {
"migrate:make": "knex --cwd src migrate:make -x ts"
},
"dependencies": {
"knex": "0.19.0",
"pg": "7.11.0"
}
package.json (рд░реВрдЯ):
"ts-node-dev": "1.0.0-pre.40",
(рдЯреАрдПрд╕-рдиреЛрдб рд╕рдВрд╕реНрдХрд░рдг рд╣реИ: рео.рей.реж)
tsconfig.json (рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░):
{
"extends": "../../tsconfig.node.json",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./build",
}
}
tsconfig.node.json (рд░реВрдЯ):
{
"compilerOptions": {
"target": "es2015",
"moduleResolution": "node",
"esModuleInterop": true,
"strict": true,
"alwaysStrict": true,
"declaration": true,
}
}
src/knexfile.ts:
import { Config } from 'knex'
export = {
client: 'pg',
connection: {
database: 'db',
user: 'user',
},
} as Config
рдЪрд▓рд╛рдиреЗ рдХреА рдЖрдЬреНрдЮрд╛:
yarn migrate:make my_migration_name
рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА [email protected]
рдкрд░ рдмрдиреА рд╣реБрдИ рд╣реИ
git clone [email protected]:brunolm/knex16bug.git
cd knex16bug
git checkout knex19
npm run api-i
docker-compose up
api_1 | /usr/src/app/src/db/knexfile.ts:1
api_1 | (function (exports, require, module, __filename, __dirname) { import { database } from '../config'
api_1 | ^^^^^^
@brunolm рддреБрдо рдЗрддрдиреЗ рдЕрдЬреНрдЮрд╛рдиреА рдХреНрдпреЛрдВ рд╣реЛ?
diff --git a/api/package.json b/api/package.json
index c0f8bff..0906f51 100644
--- a/api/package.json
+++ b/api/package.json
@@ -8,7 +8,7 @@
"dev": "ts-node-dev --respawn --poll --no-notify src/index.ts",
"\n# Database": "",
"migrate": "knex migrate:latest --knexfile ./src/db/knexfile.ts",
- "migrate-make": "knex migrate:make --knexfile ./src/db/knexfile.ts",
+ "migrate-make": "knex migrate:make --cwd src/db",
"seed": "knex seed:run --knexfile ./src/db/knexfile.ts",
"seed-make": "knex seed:make --knexfile ./src/db/knexfile.ts",
"\n# Testing": "",
api_1 | > [email protected] migrate-make /usr/src/app
api_1 | > knex migrate:make --cwd src/db "test"
api_1 |
api_1 | Requiring external module ts-node/register
api_1 | Working directory changed to /usr/src/app/src/db
api_1 | Created Migration: /usr/src/app/src/db/migrations/20190723173751_test.ts
--knexfile
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп --cwd src/db
рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ cwd
рд╕реЗ рдЕрдзрд┐рдХ knexfile
ред
рдореИрдВрдиреЗ рдлрд╝рдВрдХреНрд╢рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА, рдЬрдм рдореИрдВрдиреЗ рдЙрд╕ рдкреАрдЖрд░ рдХреЛ рд╕рд╣реА рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рджрд┐рдпрд╛, рддреЛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдЧрд▓рдд рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред
рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ
рдореБрдЭреЗ рднреА рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рдереА
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдХрд▓реНрдк --knexfile
рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ knexfile.ts . рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рджрд┐рд╢рд╛-рдирд┐рд░реНрджреЗрд╢ рд╕реЗрдЯ --cwd
рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП knexfile.ts
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: "knex migrate:make --cwd src"
(рдпрд╣ рдмрд░рд╛рдмрд░ рд╣реИ: "cd src knex migrate:make"
)
рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА knex migrate:make --knexfile knexfile.ts -x ts new_script
рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
'knex' рд╕реЗ рдЖрдпрд╛рдд knex;
^^^^
рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рддреНрд░реБрдЯрд┐: рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛
cwd . рдЬреЛрдбрд╝рддреЗ рд╕рдордп
рдЖрдВрддрд░рд┐рдХ/рдкреНрд░рдХреНрд░рд┐рдпрд╛/main_thread_only.js:29
рдмрд╛рдЗрдВрдбрд┐рдВрдЧ.рдЪрджрд┐рд░ (рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛);
рдореЗрд░рд╛ knexfile.ts рдиреАрдЪреЗ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ
import knex from 'knex';
export const database: knex.Config = {
client: 'postgresql',
connection: process.env.databaseURL,
migrations: {
extension: 'ts',
directory: './ds/migrations',
},
seeds: {
directory: './ds/seed',
},
};
рдХреЛрдИ рд╕реБрд░рд╛рдЧ?
рд╕рд╛рдереА googlers рдХреЗ рд▓рд┐рдП, рдкреВрд░реНрдг рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЛрдб рдореЗрдВ рдирд╡реАрдирддрдо knex 0.19 рдХреЗ рд╕рд╛рде рдКрдкрд░/рдиреАрдЪреЗ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдореЗрд░реЗ рдкрд╛рд╕ "рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЯреЛрдХрди рдирд┐рд░реНрдпрд╛рдд" рддреНрд░реБрдЯрд┐ рдереАред
рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ tsconfig.json
рдФрд░ .babelrc
, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реЗрд╢рди рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд┐рдпрд╛ рдерд╛ред
рдЬрдм рдореИрдВрдиреЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ knexfile.ts
рдХреЛ рдПрдХ рдХреНрд▓реАрди рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛, рддреЛ рдЗрд╕рдиреЗ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ тЬЕ ред
рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВред рддреЛ рдЬреИрд╕рд╛ рдХрд┐ @mikl рдиреЗ рдХрд╣рд╛, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдиреЛрдб рджреБрднрд╛рд╖рд┐рдпрд╛ рдкрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдЖрдЬ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдЬрдм рдореИрдВ рдПрдХ рдирдпрд╛ рдкреНрд░рд╡рд╛рд╕ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдореИрдВрдиреЗ ts-node
(https://npmjs.com/package/ts-node) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ knex рдЪрд▓рд╛рдХрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИред
рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдкрдиреА package.json
рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдЬреЛрдбрд╝реЗрдВ :)
"migrate:make": "ts-node ./node_modules/.bin/knex migrate:make --knexfile <PATH_TO_YOUR_KNEXFILE>"
рдЗрд╕реЗ migrate:latest
, seed:run
рдЖрджрд┐ рдореЗрдВ рджреЛрд╣рд░рд╛рдПрдВ ... :)
рдлрд┐рд░ рдмрд╕ рдЕрдкрдиреА рдирдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдБ!
рдХреЗ рдмрдЬрд╛рдп --knexfile
рдХрд╛ рдЙрдкрдпреЛрдЧ --cwd
- "migrate-make": "knex migrate:make --knexfile ./src/db/knexfile.ts",
+ "migrate-make": "knex migrate:make --cwd src/db",
рд╕рдорд╛рдзрд╛рди
рдХреЗ рдмрдЬрд╛рдп
--knexfile
рдХрд╛ рдЙрдкрдпреЛрдЧ--cwd
- "migrate-make": "knex migrate:make --knexfile ./src/db/knexfile.ts", + "migrate-make": "knex migrate:make --cwd src/db",
рдзрдиреНрдпрд╡рд╛рдж !! рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдмрд╣реБрдд рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИред
рдпрд╣ рдмрдВрдж рдХреНрдпреЛрдВ рд╣реИ? knexfile.ts рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рд╕реЗ рдЬреЛ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддрд╛ рдерд╛, рдХреЛрд╢рд┐рд╢ рдХреА ... (рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг + рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.6.4)
рдпрд╣ рдмрдВрдж рдХреНрдпреЛрдВ рд╣реИ? knexfile.ts рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рд╕реЗ рдЬреЛ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддрд╛ рдерд╛, рдХреЛрд╢рд┐рд╢ рдХреА ... (рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг + рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.6.4)
рдирдпрд╛ рдЕрдВрдХ рдЦреЛрд▓реЗрдВ рдФрд░ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдЬрд╣рд╛рдВ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИ)ред рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ @brunolm рдиреЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдвреВрдВрдв рд▓рд┐рдпрд╛ред
рдпрд╣ рдЕрднреА рднреА --cwd
рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ:
knexfile.ts:6
export default {
^^^^^^
SyntaxError: Unexpected token export
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдХреЛрдИ рдирдпрд╛ рдореБрджреНрджрд╛ рдирд╣реАрдВ рдЙрдард╛рдКрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдбреЙрдХреНрд╕ рдореЗрдВ рдПрдХ рдиреНрдпреВрдирддрдо рдкреВрд░реНрдг рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдЧрд╛ ... Godsend
Objectin.js рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрджрд╛рд╣рд░рдг рдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ knex рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЬрд╣рдордд рдирд╣реАрдВ рдЙрдард╛рдИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА ...
рдЕрдЪреНрдЫрд╛ ... рдореИрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ :
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдЦрд┐рд░реА рдмрд┐рдВрджреБ рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рджрд░реНрдж рдерд╛ ...
рдпрд╣ рд╕рдм рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдерд╛:
export =
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд▓рдЧрддрд╛ рд╣реИ ... рддреЛ рд╣рд╛рдБ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ ts рдлрд╝рд╛рдЗрд▓ рд╣реИ рд▓реЗрдХрд┐рди рдореЗрд░реЗ app.ts рдореЗрдВ рдореИрдВ рдЗрд╕реЗ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдФрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА ..knex.migrate.latest({
loadExtensions: ['.js'],
});
"db:migrate": "knex migrate:latest --cwd ./dist/config --env development --knexfile knexfile.js"
рдФрд░ рдореИрдВ рдХреБрдЫ рднреВрд▓ рдЧрдпрд╛, рдореБрдЭреЗ рдпрдХреАрди рд╣реИ ..
рдЕрдм рдореИрдВ рдХрд╛рдлреА рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣реИрдХреА рд▓рдЧрддрд╛ рд╣реИ
@ ctiaffay-conserto рдЖрдк рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ ( knexfile
рдХреЛ cwd
рдмрджрд▓реЗрдВ)
https://github.com/brunolm/knex16bug/tree/knex16
рд╕рдорд╛рдзрд╛рди
рдХреЗ рдмрдЬрд╛рдп
--knexfile
рдХрд╛ рдЙрдкрдпреЛрдЧ--cwd
- "migrate-make": "knex migrate:make --knexfile ./src/db/knexfile.ts", + "migrate-make": "knex migrate:make --cwd src/db",
рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди... рдХреНрдпреЛрдВ? рдпрд╣ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рдХреНрдпреЛрдВрдХрд┐ --knexfile
рдХреЛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
@ShGKme рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ: https://github.com/knex/knex/pull/3005
рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рдХреНрдпреЛрдВрдХрд┐ cwd
рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ,
рдореИрдВрдиреЗ рджреЛрдкрд╣рд░ рдХреЛ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдореЗрдВ рдмрд┐рддрд╛рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдПрдХ рдХрд░реАрдмреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рдерд╛ред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ @brunolm рдХрд╛ рдЖрдХрд▓рди рд╕рд╣реА рд╣реИ: Liftoff#launch(..)
рд╡рд┐рдзрд┐ рдХреЛ рдЧрд▓рдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЖрдк рд╡рд┐рд╡рд░рдг #3005 . рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ
рдореЛрдЯреЗ рддреМрд░ рдкрд░, Liftoff
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ:
// If the configPath was specified, then use it. Otherwise, try to infer it.
const configPath = opts.configPath || inferConfigPath(opts);
function inferConfigPath(opts) {
// configName represents the expected name of the config file, minus its extension.
// For example: "knexfile"
// If no configName was specified, then attempt to infer it from the name instead.
// In our case, since `name === "knex"`, this will result in `configName = "knexfile"`
const configName = opts.configName || (opts.name + "file");
return findPathFor(configName, {
withPossibleExtensions: [".js", ".ts"],
inDirectory: opts.cwd,
});
}
рдЪреВрдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ Liftoff#launch(..)
рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ, configPath
рдХрд╛ рдорд╛рди _always_ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдирддреАрдЬрддрди, Liftoff
рдЙрдкрдпреБрдХреНрдд preload
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ: ts-node/register
рд▓реЛрдб рд╣реЛрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣реЗрдЧрд╛)
@briandamaged рдХреНрдпрд╛ рдЖрдк рдПрдХ рдлрд┐рдХреНрд╕ рдкреАрдЖрд░ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдореМрдЬреВрджрд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдирд╣реАрдВ
@kibertoad + @brunolm : рдореИрдВ рдЖрдЬ рдпрд╛ рдХрд▓ рдмрд╛рдж рдореЗрдВ рдХреБрдЫ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдЕрднреА рднреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рдмрдбрд╝реА рддрд╕реНрд╡реАрд░ рдХреЛ рд╕рдордЭреВрдВред рдореИрдВ рдЬреЛ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрдиреЗрдХреНрд╕ рд╕реАрдПрд▓рдЖрдИ рдХреБрдЫ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Liftoff
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╣реИред
@briandamaged рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рддрдХ рдХреНрд▓реА рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдо рдЬрд╛рди рд╕рдХреЗрдВ рдХрд┐ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рддрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЙрддрдирд╛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред
@brunolm @ShGKme @mmiszy @ilkka рдпрд╣ @briandamaged рдХреЗ рдЕрджреНрднреБрдд рдХрд╛рдо рдХреЗ рд▓рд┐рдП 0.20.9 рдореЗрдВ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ рдФрд░ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЖрдкрдХреЗ рд▓рд┐рдП рдорджрджрдЧрд╛рд░ рдереЗред
@kibertoad рд╕рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж
@kibertoad рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж ! рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЕрднреА 100% рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ!
api_1 | > knex migrate:make --knexfile ./src/db/knexfile.ts "test"
api_1 |
api_1 | Requiring external module ts-node/register
api_1 | Working directory changed to /usr/src/app/src/db
api_1 | Created Migration: /usr/src/db/migrations/20200210194631_test.ts
@brunolm Haha, @briandamaged рдЕрд╕рд▓реА рд╣реАрд░реЛ рд╣реИред рдЦреБрд╢реА рд╣реИ рдХрд┐ рдпрд╣ рдЕрдм рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣ рддреНрд░реБрдЯрд┐ NodeJS 14.0.0, рдХрдорд╛рдВрдб knex migrate:make test
рдФрд░ рдирд┐рдореНрди рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдорд┐рд▓рддреА рд╣реИ:
// knexfile.ts
export const config = {
development: {
client: "postgres",
connection: {
filename: "./dev.sqlite3"
}
},
staging: {
client: "postgresql",
connection: {
database: "my_db",
user: "username",
password: "password"
},
pool: {
min: 2,
max: 10
},
migrations: {
tableName: "knex_migrations"
}
},
production: {
client: "postgresql",
connection: {
database: "my_db",
user: "username",
password: "password"
},
pool: {
min: 2,
max: 10
},
migrations: {
tableName: "knex_migrations"
}
}
};
рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
Failed to load external module ts-node/register
Failed to load external module typescript-node/register
Failed to load external module typescript-register
Failed to load external module typescript-require
Failed to load external module @babel/register
(node:6468) UnhandledPromiseRejectionWarning: C:\Users\Flori\WebstormProjects\OragesAuthentication-Backend\knexfile.ts:3
export const config = {
^^^^^^
SyntaxError: Unexpected token 'export'
at wrapSafe (internal/modules/cjs/loader.js:1101:16)
at Module._compile (internal/modules/cjs/loader.js:1149:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1205:10)
at Module.load (internal/modules/cjs/loader.js:1034:32)
at Function.Module._load (internal/modules/cjs/loader.js:923:14)
at Module.require (internal/modules/cjs/loader.js:1074:19)
at require (internal/modules/cjs/helpers.js:72:18)
at openKnexfile (C:\Users\Flori\WebstormProjects\OragesAuthentication-Backend\node_modules\knex\bin\cli.js:26:16)
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ ts-рдиреЛрдб рдЬреЛрдбрд╝рдХрд░ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭреЗ рдХреНрдиреЗрдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг
0.16.3
рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рдерд╛редрдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓
ts-node/register
knexfile.ts
рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ