Knex рд╕рдВрд╕реНрдХрд░рдг: 0.16.3 (рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЙрдПрдХреНрд╕рдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)
рдбреЗрдЯрд╛рдмреЗрд╕ + рд╕рдВрд╕реНрдХрд░рдг: PostgreSQL 10.5
рдУрдПрд╕: рд╡рд┐рдВрдбреЛрдЬ 10 рдкреНрд░реЛ 64 рдмрд┐рдЯ
knex migrate:make somename
рдЪрд▓рдиреЗ рдкрд░, рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ:
Requiring external module ts-node/register
Using environment: development
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type undefined
at assertPath (path.js:39:11)
at Object.resolve (path.js:166:7)
at directories.map.directory (X:\Code\node\knextest\node_modules\knex\lib\migrate\MigrationGenerator.js:82:28)
at Array.map (<anonymous>)
at MigrationGenerator._absoluteConfigDirs (X:\Code\node\knextest\node_modules\knex\lib\migrate\MigrationGenerator.js:81:24)
at MigrationGenerator._ensureFolder (X:\Code\node\knextest\node_modules\knex\lib\migrate\MigrationGenerator.js:41:23)
at MigrationGenerator.make (X:\Code\node\knextest\node_modules\knex\lib\migrate\MigrationGenerator.js:35:17)
at Migrator.make (X:\Code\node\knextest\node_modules\knex\lib\migrate\Migrator.js:122:27)
at Command.commander.command.description.option.action (X:\Code\node\knextest\node_modules\knex\bin\cli.js:179:10)
at Command.listener (X:\Code\node\knextest\node_modules\commander\index.js:315:8)
at Command.emit (events.js:182:13)
at Command.parseArgs (X:\Code\node\knextest\node_modules\commander\index.js:654:12)
at Command.parse (X:\Code\node\knextest\node_modules\commander\index.js:474:21)
at Liftoff.invoke (X:\Code\node\knextest\node_modules\knex\bin\cli.js:278:13)
at Liftoff.execute (X:\Code\node\knextest\node_modules\liftoff\index.js:203:12)
at module.exports (X:\Code\node\knextest\node_modules\flagged-respawn\index.js:51:3)
рдпрд╣ рдореЗрд░реА knexfile.ts
:
module.exports = {
development: {
client: 'pg',
connection: {
host: 'localhost',
database: 'postgres',
user: 'postgres',
password: 'pw',
},
migrations: {
directory: 'migrations',
},
},
};
рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╡рд░рдг:
knex migrate:make somename
рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ рдореИрдВ knexfile рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ .js
рдмрджрд▓ рджреВрдВред (рдХреНрд▓реЗрдХреНрд╕ 0.16.3)knex migrate:make somename
рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ knexfile рдХреЗ рд╕рд╛рде knex 0.15.1 рдФрд░ @types/knex
0.15.1 рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПредрдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡рддрдГ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ: https://github.com/tgriesser/knex/issues/2998
рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ 0.15.2
рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 0.16.x
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡рддрдГ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ: # 2998
рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ 0.15.2 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 0.16.x рдирд╣реАрдВ
рдирд╣реАрдВ, рдпрд╣ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИред рдФрд░ рдореИрдВ рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рджреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде # 2998 рдХреЛ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕реНрд╡рдд: knexfile рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ knexfile.ts рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ, рдЖрдк --knexfile knexfile.ts
рддрд░реНрдХ рдХреЛ рдХрдорд╛рдВрдб рдХрд░рдиреЗ рдпрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЬрдирд░реЗрдЯрд░ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рд░рд╛рд╕реНрддрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
knex migrate:make --migrations-directory . -x ts migration-name
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдпрджреНрдпрдкрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ knexfile.ts рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ migrate:latest
рд╕рд╛рде рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛, рдЬреЛ migrate:make
рддреБрд▓рдирд╛ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рд░реВрдк рд╕реЗ рдПрдХ рдЕрд▓рдЧ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд░рд┐рдкреНрд░реЛ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк рджреЛрдиреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/jrr/knex-ts-issue-repro
рдЖрдЬ рдпрд╣ рднреА рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ knex --knexfile knexfile.ts migrate:make (...)
.ts рдХреА рдмрдЬрд╛рдп рдПрдХ .js рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдЧреАред (рдкрд╣рд▓реЗ, рдЬрдм knex рдиреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ knexfile.ts
рдЙрдард╛рдпрд╛ рдерд╛, рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ .ts рдорд╛рдЗрдЧреНрд░реЗрд╢рди рднреА рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛)ред
PostgreSQL рд╕рд░реНрд╡рд░ рдХреЛ рдХреНрд╡реЗрд░реА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо Knex
рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдордиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред
knex migrate:make --knexfile knexfile.ts -x ts <your-migration-name>
knex migrate:latest --knexfile knexfile.ts
knex seed:make --knexfile knexfile.ts -x ts <your-seed-name>
knex seed:run --knexfile knexfile.ts
--knexfile knexfile.ts
рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк knexfile.js
рдХреНрдпреЛрдВрдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИред
рддрдп рдХрд░рдиреЗ рдкрд░ рдХреЛрдИ рдпреЛрдЬрдирд╛? рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде Knex рдЕрдкрдирд╛рдиреЗ рдХреЛ рдмрдврд╝рд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ: /
@ рджрд╛рджрд╛рдЧрд┐рд░реА рд░рд┐рдорд╛рдЗрдВрдбрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рдЖрдЬ рдпрд╛ рдХрд▓ рджреЗрдЦ рд▓реВрдВрдЧрд╛ред
рдЗрд╕рдХреЗ рд▓рд┐рдП рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде
рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ!
https://github.com/tgriesser/knex/pull/3282
рдЖрдЬ рдпрд╣ рднреА рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐
knex --knexfile knexfile.ts migrate:make (...)
.ts рдХреА рдмрдЬрд╛рдп рдПрдХ .js рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдЧреАред (рдкрд╣рд▓реЗ, рдЬрдм knex рдиреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗknexfile.ts
рдЙрдард╛рдпрд╛ рдерд╛, рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ .ts рдорд╛рдЗрдЧреНрд░реЗрд╢рди рднреА рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛)ред
рдХреЗрд╡рд▓ рдХреНрдпрд╛ рд╡реЗ рдЕрд▓рдЧ рдмрдЧ рд╣реИрдВ?
@ рдореИрдерд┐рдпреБрдордЧ рд╣рд╛рдВред рдкреАрдЖрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдХреБрдЫ рдорд┐рдирдЯ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рд╣реИ: рдбреА
@kibertoad рдореИрдВрдиреЗ рдХрд┐рдпрд╛! рд╡рд┐рд╡рд░рдг рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ Knexfile рдХреЗ рд╕рдорд╛рди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рдерд╛ред
The description makes it sounds like that was rather for inferring the extension based on the same extension as the Knexfile
-> рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╣рд╛рдБ, рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ knexfile рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдпрд╛ рдСрдЯреЛрд░реЗрд╕реНрдкреЛрдиреНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЯреАрдПрд╕ рдиреЗрдХреНрд╕рдлрд╝рд╛рдЗрд▓реНрд╕ рдХреЗ 0.17.6 рдирд┐рд╢реНрдЪрд┐рдд рдСрдЯреЛрд░реЗрд╕реНрдкреЛрд▓реЗрд╢рдиред
рдареАрдХ рд╣реИ! рдХреНрдпреЛрдВрдХрд┐ extension: "ts"
рд╕рд╛рде 0.17.6 рдиреЗ рдЕрднреА рднреА ".js" рдкрд░рд┐рдгрд╛рдо рджрд┐рдпрд╛ред рдЙрди рдмрдЧреНрд╕ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! ЁЯШД
рдХреНрдпреЛрдВрдХрд┐ 0.17.6 рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рде: "ts" рдиреЗ рдЕрднреА рднреА ".js" рдкрд░рд┐рдгрд╛рдо рджрд┐рдпрд╛
рдЖрд╣, рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдиреЗрдХреНрд╕реНрдЯрд╛рдЗрд▓ рд╣реИ
{
...
migrations: {
extension: "ts"
}
рдЗрд╕ рдореЗрдВ? рдЙрд╕ рдПрдХ рдХреЛ https://github.com/tgriesser/knex/commit/a65a95bc672563e01c08b40384e1dc2b079ecee1 рдореЗрдВ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдкрд░ рдЕрдкрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд▓реЙрдХ рдХрд░рдХреЗ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрджрд┐ рдЖрдк рд╕реАрдзреЗ рдорд╛рд╕реНрдЯрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)ред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ 0.17 рдХреЛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
0.18.0 рдЕрднреА рднреА рдХрд╛рдлреА рдЖрдЧреЗ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдЧрд▓рд╛ -1 рдЬрд╛рд░реА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдЕрд░реЗ, рдореИрдВрдиреЗ рдкреАрдЖрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИ, рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!
@kibertoad рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛, рд╕рдЯреАрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рд╣рдо 0.18 рдкрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдИ рддрдирд╛рд╡ рдирд╣реАрдВред ЁЯШД
@kibertoad рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╕реАрдзреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдкреНрд░рддрд┐рдмрджреНрдз рдЖрдк рдХреЗрд╡рд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
module.exports = {
migrations: {
extension: 'ts';
}
}
рд▓реЗрдХрд┐рди рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд╣рд╛рдВ рд░рдЦрд╛ рдЬрд╛рдП рдФрд░ рдХрд╣рд╛рдВ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рдП, рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рдЗрд╕рдХреЗ рддрд╣рдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ
module.exports = {
[environment]: {
migrations: {
directory: './migrations';
}
}
рдпрджрд┐ рдореИрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡рд╕реНрддреБ рд╕реЗ migrations
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
@ViggoV рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдЖрдЬ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред
@ViggoV рдХреНрдпрд╛ рдЖрдк рдирд╡реАрдирддрдо рдорд╛рд╕реНрдЯрд░
0.18.0-next2 рдореЗрдВ рдЬрд╛рд░реА
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ { ext: 'ts' }
рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛, рдЬреЛ рдХрд┐ рдореЗрд░реА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдордп рд╣реЛрдиреЗ рдкрд░ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛
рд╣рд╛рдп, рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред рдореИрдВрдиреЗ рдЕрдкрдиреЗ knexfile.ts рдореЗрдВ ts-node / register рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛
`
рдЖрд╡рд╢реНрдпрдХрддрд╛ ('ts-node / register')
const s = рдЖрд╡рд╢реНрдпрдХрддрд╛ ("./ settings.js");
рдореЙрдбреНрдпреВрд▓ред рдирд┐рд░реНрдпрд╛рдд = {
client: 'pg',
connection: {
user: s.user,
host: s.host,
database: 'starwars',
password: s.password,
ssl: true
}
};
`
рдореИрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рд╕рд░рд▓ рдерд╛ред рдореИрдВ рд╕рд┐рд░реНрдл _knexfile.js_ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ "/ рдмреИрдХрдПрдВрдб" рдореЗрдВ рдиреЗрдХреНрд╕ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдЕрдирдЬрд╛рдиреЗ рдХрд╛рд░рдг рд╕реЗ рдлрд╛рдЗрд▓ рдЕрдиреНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЪрд▓реА рдЧрдИред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ knexfile.js рдХреЛ "backend / knexfile.js" рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рд╣рд╛рдп @moacirandretti , рдореЗрд░реЗ knexfile.ts рдпрд╣ рд░реВрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрд▓реА рд╣реЗрд░реЛрдХреВ heroku run knex --knexfile knexfile.ts migrate: latest
рдпрд╣ рд╕рдВрджреЗрд╢ рд╡рд╛рдкрд╕ рдХрд░реЗрдВред
Running knex --knexfile knexfile.ts migrate: latest on тмв backend-ecolab ... up, run.5056 (Free)
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 sucrase / register / ts
Failed to load external module @ babel / register
Error: Cannot find module 'ts-node / register'
Require stack:
- /app/knexfile.ts
- /app/node_modules/knex/bin/cli.js
at Function.Module._resolveFilename (internal / modules / cjs / loader.js: 966: 15)
at Function.Module._load (internal / modules / cjs / loader.js: 842: 27)
at Module.require (internal / modules / cjs / loader.js: 1026: 19)
at require (internal / modules / cjs / helpers.js: 72: 18)
at Object. <anonymous> (/app/knexfile.ts:1:1)
at Module._compile (internal / modules / cjs / loader.js: 1138: 30)
at Object.Module._extensions..js (internal / modules / cjs / loader.js: 1158: 10)
at Module.load (internal / modules / cjs / loader.js: 986: 32)
at Function.Module._load (internal / modules / cjs / loader.js: 879: 14)
at Module.require (internal / modules / cjs / loader.js: 1026: 19)
рдореИрдВрдиреЗ рдЗрд╕ рдкреИрдХреЗрдЬ ts- рдиреЛрдб рдХреЛ рджреЗрд╡ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ
рдореИрдВрдиреЗ рдЙрд╕реА рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ред
knexfile.ts:
import dotenv from "dotenv";
import { Config } from "knex";
dotenv.config();
interface KnexConfig {
[name: string]: Config;
}
const knexConfig: KnexConfig = {
development: {
client: "pg",
connection: {
host: process.env.DB_HOST || "127.0.0.1",
user: process.env.DB_USERNAME || "postgres",
password: process.env.DB_PASSWRORD || "postgres",
database: process.env.DB_DEV_NAME || "done_list",
},
migrations: {
directory: "./migrations",
extension: "ts",
},
},
test: {
client: "pg",
connection: {
host: process.env.DB_HOST || "127.0.0.1",
user: process.env.DB_USERNAME || "postgres",
password: process.env.DB_PASSWRORD || "postgres",
database: process.env.DB_DEV_NAME || "done_list_test",
},
},
};
export { knexConfig };
рдЬрдм рдореИрдВ knex migrate:make user
рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ knex migrate:make --migrations-directory ./scr/migrations -x ts user
рдЪрд▓рд╛рддрд╛ рд╣реВрдВред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ: 4.0.2
knex: 0.21.5
@ рдкреНрд░рдХрд╛рд░ / knex: 0.16.1
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
PostgreSQL рд╕рд░реНрд╡рд░ рдХреЛ рдХреНрд╡реЗрд░реА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо
Knex
рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдордиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред--knexfile knexfile.ts
рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдкknexfile.js
рдХреНрдпреЛрдВрдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИред