рдореИрдВ рдЬрд┐рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЙрд╕рдореЗрдВ knex рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рд╡реЗрдмрдкреИрдХ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдЙрди рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ/рдмреЛрд▓рд┐рдпреЛрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЗрд╕ рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?
`````` рд▓реЙрдЧ
./~/mariasql/lib/Client.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: 'рдлрд╝рд╛рдЗрд▓' рдпрд╛ 'рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛' рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ ../build/Debug/sqlclient ~/project/node_modules/mariasql/lib рдореЗрдВ
@ ./~/mariasql/lib/Client.js 17:10-45
./~/knex/lib/dialects/sqlite3/index.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: ~/project/node_modules/knex/lib/рдмреЛрд▓рд┐рдпреЛрдВ/sqlite3 рдореЗрдВ рдореЙрдбреНрдпреВрд▓ 'sqlite3' рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
@ ./~/knex/lib/dialects/sqlite3/index.js 33:11-29
./~/knex/lib/dialects/mysql2/index.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: ~/project/node_modules/knex/lib/рдмреЛрд▓рд┐рдпреЛрдВ/mysql2 рдореЗрдВ рдореЙрдбреНрдпреВрд▓ 'mysql2' рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
@ ./~/knex/lib/dialects/mysql2/index.js 33:11-28
./~/knex/lib/dialects/mysql/index.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: ~/project/node_modules/knex/lib/рдмреЛрд▓рд┐рдпреЛрдВ/mysql рдореЗрдВ рдореЙрдбреНрдпреВрд▓ 'mysql' рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
@ ./~/knex/lib/dialects/mysql/index.js 35:11-27
./~/knex/lib/dialects/oracle/index.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: ~/project/node_modules/knex/lib/рдмреЛрд▓рд┐рдпреЛрдВ/рдУрд░реЗрдХрд▓ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ 'рдУрд░реЗрдХрд▓' рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
@ ./~/knex/lib/dialects/oracle/index.js 40:11-28
./~/knex/lib/dialects/postgres/index.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: ~/project/node_modules/knex/lib/рдмреЛрд▓рд┐рдпреЛрдВ/postgres рдореЗрдВ рдореЙрдбреНрдпреВрд▓ 'pg' рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
@ ./~/knex/lib/dialects/postgres/index.js 46:11-24
./~/knex/lib/dialects/postgres/index.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: ~/рдкреНрд░реЛрдЬреЗрдХреНрдЯ/рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕/knex/lib/рдмреЛрд▓рд┐рдпреЛрдВ/рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ 'рдкреАрдЬреА-рдХреНрд╡реЗрд░реА-рд╕реНрдЯреНрд░реАрдо' рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
@ ./~/knex/lib/dialects/postgres/index.js 132:50-76
./~/knex/lib/dialects/strong-oracle/index.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: ~/рдкреНрд░реЛрдЬреЗрдХреНрдЯ/рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕/knex/lib/рдмреЛрд▓рд┐рдпреЛрдВ/рдордЬрдмреВрдд-рдУрд░реЗрдХрд▓ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ 'рдордЬрдмреВрдд-рдУрд░реЗрдХрд▓' рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
@ ./~/knex/lib/dialects/strong-oracle/index.js 15:9-33```
``````
рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдереА, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдореЗрд░реЗ рдмрд╛рд╣рд░реА рд▓реЛрдЧреЛрдВ рдореЗрдВ рд░реЗрдЧреЗрдХреНрд╕ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛:
const commonLoaders = [
{ test: /\.js$/, loader: 'babel', exclude: [/node_modules/] },
{ test: /\.json$/, loader: 'json' },
];
module.exports = [
{
name: 'browser',
entry: './js/entry.js',
output: {
path: './build',
filename: 'bundle.js',
},
module: {
loaders: commonLoaders.concat([
{ test: /\.styl$/, loader: 'style!css!stylus' },
]),
},
},
{
name: 'server',
entry: './server.js',
target: 'node',
output: {
path: './build',
filename: 'server.js',
libraryTarget: 'commonjs2',
},
externals: [
{
'socket.io': 'socket.io',
},
/^[a-z\-0-9]+$/,
],
module: {
loaders: commonLoaders.concat([
{ test: /\.styl$/, loader: 'css!stylus' },
]),
},
},
];
+1
@joeketchi node_modules рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХреЛрдб рдРрд╕рд╛ рдХрд░реЗрдЧрд╛ рдЬреЛ рдЗрд╕реЗ рдЕрдзрд┐рдХ рдмреБрджреНрдзрд┐рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдХрд░реЗрдЧрд╛ рдЬреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдлреЗрдВрдХрддрд╛ рд╣реИред
рдЗрд╕рдореЗрдВ рднреА рднрд╛рдЧ рдЧрдпрд╛ред рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ node_modules рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдХреНрдпреЛрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдореЗрдВ рднреА рднрд╛рдЧ рдЧрдпрд╛ред рдореЗрд░реЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ;
externals: {
knex: 'commonjs knex'
}
рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╛рд░рд┐рдпрд╛рд╕реНрдХреНрд▓ рд╕рдорд╕реНрдпрд╛ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЙрди рд╕рднреА рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдмрд╛рд╣рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП mysql2 рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдмрд╛рд╣рд░реА рдореЗрдВ рд╣реИ:
externals: {
// Possible drivers for knex - we'll ignore them
'sqlite3': 'sqlite3',
'mariasql': 'mariasql',
'mssql': 'mssql',
'mysql': 'mysql',
'oracle': 'oracle',
'strong-oracle': 'strong-oracle',
'oracledb': 'oracledb',
'pg': 'pg',
'pg-query-stream': 'pg-query-stream'
}
рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реИ рдХрд┐ knex рддреНрд░реБрдЯрд┐рдпреЛрдВ рдпрд╛ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдмрдВрдбрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд▓рдЧрддреА рд╣реИ рдХрд┐ рдХреИрд╕реЗ knex рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реБрдП рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реЗрдЯрдЕрдк рдХрд┐рдпрд╛ рдЬрд╛рдП... рд╡реЗрдмрдкреИрдХ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдорд░реНрдерди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП knex рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рджреЗрддрд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрднреА рддрдХ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде рдЕрднреА рднреА рдЕрдирд╕реБрд▓рдЭреЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдкреНрд░рд╡рд╛рд╕рди рдФрд░ рдмреАрдЬ рдХреЗ рд╕рд╛рде:
WARNING in ./node_modules/knex/lib/migrate/index.js
342:20-81 Critical dependency: the request of a dependency is an expression
WARNING in ./node_modules/knex/lib/migrate/index.js
447:18-49 Critical dependency: the request of a dependency is an expression
WARNING in ./node_modules/knex/lib/seed/index.js
113:13-74 Critical dependency: the request of a dependency is an expression
WARNING in ./node_modules/knex/lib/seed/index.js
150:11-24 Critical dependency: the request of a dependency is an expression
рдореИрдВ рдЗрдиреНрд╣реЗрдВ рдареАрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛
@ifullgaz рдЬреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реИ рдХрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛() рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕрдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХреА рдЧрдИ рдереА? https://github.com/webpack/webpack/issues/196
@ifullgaz , рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдиреАрдЪреЗ рдХреА рддрд░рд╣ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реАрдВред рдХреНрдпрд╛ рдЖрдк рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдП рдереЗ?
Error --------------------------------------------------
Command failed: npm install
gyp ERR! UNCAUGHT EXCEPTION
gyp ERR! stack Error: spawn EACCES
gyp ERR! stack at exports._errnoException (util.js:1018:11)
gyp ERR! stack at ChildProcess.spawn (internal/child_process.js:319:11)
gyp ERR! stack at exports.spawn (child_process.js:378:9)
gyp ERR! stack at exports.execFile (child_process.js:143:15)
@brianhuangyl рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ node_modules рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ рд╕рднреА ist рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдЖрджрд┐ рд╣реИ (рдЖрдкрдиреЗ рдХрд┐рд╕реА рднреА рд╕рдордп рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ npm рдЗрдВрд╕реНрдЯреЙрд▓ рдирд╣реАрдВ рдЪрд▓рд╛рдпрд╛ рд╣реИ)?
[EACCES] Permission bits of the file mode do not permit the
requested access, or search permission is denied on a
component of the path prefix.
@ifullgaz рдореБрдЭреЗ https://www.laurivan.com/make-electron-work-with-knex-js/ рд╕реЗ рд╕реБрдЭрд╛рд╡ рдорд┐рд▓рд╛, рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛:
WARNING in ./node_modules/knex/lib/migrate/index.js
342:20-81 Critical dependency: the request of a dependency is an expression
WARNING in ./node_modules/knex/lib/migrate/index.js
447:18-49 Critical dependency: the request of a dependency is an expression
WARNING in ./node_modules/knex/lib/seed/index.js
113:13-74 Critical dependency: the request of a dependency is an expression
WARNING in ./node_modules/knex/lib/seed/index.js
150:11-24 Critical dependency: the request of a dependency is an expression
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЗрд╕ рднрд╛рдЧ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛:
config.plugins = [
// ...
new NormalModuleReplacementPlugin(/\.\.\/migrate/, '../util/noop.js'),
new NormalModuleReplacementPlugin(/\.\.\/seed/, '../util/noop.js'),
];
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЯрд┐рдХрдЯ рдерд╛ libraryTarget: 'commonjs2',
рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рджреЗрдЦрд╛ рдЬреЛ рд╡реЗрдмрдкреИрдХ рдХреЛ knex рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ require
рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреИрд░-рд╢рд╛рдмреНрджрд┐рдХ require
рдХреЛ рдЕрдХреЗрд▓рд╛ рдЫреЛрдбрд╝ рджреЗрдЧрд╛ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдФрд░ рд╕реАрдб рдлрд╛рдЗрд▓реЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЬреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рд┐рдпрд╛ рд╣реИ рд╡рд╣ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
config.module.rules = [
{
include: [
/knex\/lib\/migrate\/index/,
/knex\/lib\/seed\/index/
],
loader: 'string-replace-loader',
options: {
search: 'require(\\([^\'"])',
replace: '__non_webpack_require__$1',
flags: 'g'
}
}
];
рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдореИрдВ knex рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рд╡реЗрдмрдкреИрдХ рдмрдВрдбрд▓ рдмрдирд╛рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЙрд╕ рдмрдВрдбрд▓ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред @mdlavin рдХреЗ рд╕реБрдЭрд╛рд╡ рдиреЗ рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╡реЗрдмрдкреИрдХ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рдерд╛ рдХрд┐ рдореБрдЭреЗ рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╡реЗрдмрдкреИрдХ рдмрдВрдбрд▓ рд╕реЗ рдмреИрдВрдб рд╕реЗ рдмрд╛рд╣рд░ рдмрдВрдбрд▓ рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдФрд░ рдмреАрдЬреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╡реЗрдмрдкреИрдХ рдХреЗ ContextReplacementPlugin
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рдореЗрд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдПрдХ рдирдореВрдирд╛ рд╣реИ (рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ):
plugins: [
//...
fs.existsSync(path.join(params.targetPackageFilePath, 'migrations')) && new webpack.ContextReplacementPlugin(
/knex\/lib\/migrate/,
'.',
fs.readdirSync(path.join(params.targetPackageFilePath, 'migrations'))
.reduce((result, file) => {
return Object.assign(result, {
[path.join(params.targetPackageFilePath, 'migrations', file)]: path.relative(
path.dirname(require.resolve('knex/lib/migrate')),
path.join(params.targetPackageFilePath, 'migrations', file)
)
});
}, {})),
fs.existsSync(path.join(params.targetPackageFilePath, 'seeds')) && new webpack.ContextReplacementPlugin(
/knex\/lib\/seed/,
'.',
fs.readdirSync(path.join(params.targetPackageFilePath, 'seeds'))
.reduce((result, file) => {
return Object.assign(result, {
[path.join(params.targetPackageFilePath, 'seeds', file)]: path.relative(
path.dirname(require.resolve('knex/lib/seed')),
path.join(params.targetPackageFilePath, 'seeds', file)
)
});
}, {}))
//...
]
рдореЗрд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ params.targetPackageFiletPath
рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрде рд╣реИ рдЬреИрд╕реЗ /Users/yourusername/yourproject
ред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЙрд╕ рдкрде рдкрд░ рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ migrations
рдФрд░ seeds
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рд╣реИрдВ рддреЛ рдкрд░рд┐рдгрд╛рдореА рдкреНрд▓рдЧрдЗрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
fs.existsSync(path.join(params.targetPackageFilePath, 'migrations')) && new webpack.ContextReplacementPlugin(
/knex\/lib\/migrate/,
'.',
{
'/Users/yourusername/yourproject/201706261234_migration.ts': '../../../migrations/201706261234_migration.ts'
}),
fs.existsSync(path.join(params.targetPackageFilePath, 'seeds')) && new webpack.ContextReplacementPlugin(
/knex\/lib\/seed/,
'.',
{
'/Users/yourusername/yourproject/seeds/201706261234_first-seed.ts': '../../../seeds/201706261234_first-seed.ts'
}),
рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ knex рдХрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдФрд░ рд╕реАрдб рдХреЛрдб рдЖрдкрдХреЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдФрд░ рдмреАрдЬреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП require
рдкрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ https://github.com/tgriesser/knex/blob/master/ рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓ рдХрд░рддреЗ рд╕рдордп рдХреНрдиреЗрдХреНрд╕ рдХреЛ рдЗрди рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рднреВрдорд┐ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдХрд░рдХреЗ?
рд╡реИрд╕реЗ рднреА, рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдХреЛрдгреАрдп рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реБрдЭрд╛рд╡?
рдореИрдВ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ (рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЗрд╕реЗ рдХреЛрдгреАрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:
ERROR in ./node_modules/knex/lib/dialects/oracle/utils.js
Module not found: Error: Can't resolve 'crypto' in '/Users/marudits/Documents/CODE/PROJECT/MOJOMARET/app-member/node_modules/knex/lib/dialects/oracle'
ERROR in ./node_modules/knex/lib/dialects/mssql/index.js
Module not found: Error: Can't resolve 'mssql/package.json' in '/Users/marudits/Documents/CODE/PROJECT/MOJOMARET/app-member/node_modules/knex/lib/dialects/mssql'
ERROR in ./node_modules/knex/lib/runner.js
Module not found: Error: Can't resolve 'stream' in '/Users/marudits/Documents/CODE/PROJECT/MOJOMARET/app-member/node_modules/knex/lib'
ERROR in ./node_modules/knex/lib/dialects/oracledb/index.js
Module not found: Error: Can't resolve 'stream' in '/Users/marudits/Documents/CODE/PROJECT/MOJOMARET/app-member/node_modules/knex/lib/dialects/oracledb'
рдореИрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╣рд╛рдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдХреНрдпрд╛ рдЗрд╕реЗ angular.json
рдпрд╛ tsconfig.json
рдлрд╝рд╛рдЗрд▓ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рд╡реЗрдмрдкреИрдХ рдореЗрдВ рд╢рд╛рдпрджред
рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ ( @ifullgaz рдХреЛ рд╢реНрд░реЗрдп) рдореБрдЭреЗ mysql2.
externals: {
// Possible drivers for knex - we'll ignore them
sqlite3: 'sqlite3',
mysql2: 'mysql2',
mariasql: 'mariasql',
mysql: 'mysql',
oracle: 'oracle',
'strong-oracle': 'strong-oracle',
oracledb: 'oracledb',
pg: 'pg',
'pg-query-stream': 'pg-query-stream'
}
рдлрд┐рд░ рдмрд╕ рдЙрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЗрд╕ рд╕реВрдЪреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╡реЗрдмрдкреИрдХ рдЗрд╕реЗ рдмрд┐рд▓реНрдб рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдЧрд╛ред
@ifullgaz рдореБрдЭреЗ https://www.laurivan.com/make-electron-work-with-knex-js/ рд╕реЗ рд╕реБрдЭрд╛рд╡ рдорд┐рд▓рд╛, рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛:
WARNING in ./node_modules/knex/lib/migrate/index.js 342:20-81 Critical dependency: the request of a dependency is an expression WARNING in ./node_modules/knex/lib/migrate/index.js 447:18-49 Critical dependency: the request of a dependency is an expression WARNING in ./node_modules/knex/lib/seed/index.js 113:13-74 Critical dependency: the request of a dependency is an expression WARNING in ./node_modules/knex/lib/seed/index.js 150:11-24 Critical dependency: the request of a dependency is an expression
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЗрд╕ рднрд╛рдЧ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛:
config.plugins = [ // ... new NormalModuleReplacementPlugin(/\.\.\/migrate/, '../util/noop.js'), new NormalModuleReplacementPlugin(/\.\.\/seed/, '../util/noop.js'), ];
рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред рдЗрд╕реЗ рдореИрдиреЗ рдХрд┐рдпрд╛ рд╣реИ:
plugins: [
new webpack.NormalModuleReplacementPlugin(/m[sy]sql2?|oracle(db)?|sqlite3/, "node-noop"),
new webpack.NormalModuleReplacementPlugin(/\.\.\/migrate/, "node-noop"),
new webpack.NormalModuleReplacementPlugin(/\.\.\/seed/, "node-noop")
]
1) рдореБрдЭреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП noop.js
рдХрд╛ рд╕рд╛рдкреЗрдХреНрд╖ рдЖрдпрд╛рдд рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕реЗ knex рдХреЗ рдЕрдВрджрд░ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореИрдВрдиреЗ рдЕрднреА рдпрд╣ рд╕рд░рд▓ node-noop
lib рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
2) рд╣рдо рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд░реЗрдЧреЗрдХреНрд╕ рдЕрдиреНрдп рд╕рднреА рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╣ рдвреВрдВрдврддрд╛ рд╣реИред рдЕрдкрдиреЗ рджрд┐рд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред
2019/10 рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рдореЗрд░рд╛ рдЬрд╡рд╛рдм рдХрд┐рд╕реА рдЕрдиреНрдп рдЕрдВрдХ рдореЗрдВ рджреЗрдЦреЗрдВ https://github.com/tgriesser/knex/issues/1446#issuecomment -537715431
рдореИрдВрдиреЗ рдкреАрдЬреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ "рдмрд╛рд╣рд░реА" рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрд╛ рдФрд░ рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ, рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗрдмрдкреИрдХ рдмреИрдХ-рдПрдВрдб рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ?
рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдореИрдВ knex рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рд╡реЗрдмрдкреИрдХ рдмрдВрдбрд▓ рдмрдирд╛рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЙрд╕ рдмрдВрдбрд▓ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред @mdlavin рдХреЗ рд╕реБрдЭрд╛рд╡ рдиреЗ рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╡реЗрдмрдкреИрдХ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рдерд╛ рдХрд┐ рдореБрдЭреЗ рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╡реЗрдмрдкреИрдХ рдмрдВрдбрд▓ рд╕реЗ рдмреИрдВрдб рд╕реЗ рдмрд╛рд╣рд░ рдмрдВрдбрд▓ рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдФрд░ рдмреАрдЬреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╡реЗрдмрдкреИрдХ рдХреЗ
ContextReplacementPlugin
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рдореЗрд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдПрдХ рдирдореВрдирд╛ рд╣реИ (рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ):plugins: [ //... fs.existsSync(path.join(params.targetPackageFilePath, 'migrations')) && new webpack.ContextReplacementPlugin( /knex\/lib\/migrate/, '.', fs.readdirSync(path.join(params.targetPackageFilePath, 'migrations')) .reduce((result, file) => { return Object.assign(result, { [path.join(params.targetPackageFilePath, 'migrations', file)]: path.relative( path.dirname(require.resolve('knex/lib/migrate')), path.join(params.targetPackageFilePath, 'migrations', file) ) }); }, {})), fs.existsSync(path.join(params.targetPackageFilePath, 'seeds')) && new webpack.ContextReplacementPlugin( /knex\/lib\/seed/, '.', fs.readdirSync(path.join(params.targetPackageFilePath, 'seeds')) .reduce((result, file) => { return Object.assign(result, { [path.join(params.targetPackageFilePath, 'seeds', file)]: path.relative( path.dirname(require.resolve('knex/lib/seed')), path.join(params.targetPackageFilePath, 'seeds', file) ) }); }, {})) //... ]
рдореЗрд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ
params.targetPackageFiletPath
рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрде рд╣реИ рдЬреИрд╕реЗ/Users/yourusername/yourproject
ред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЙрд╕ рдкрде рдкрд░ рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВmigrations
рдФрд░seeds
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рд╣реИрдВ рддреЛ рдкрд░рд┐рдгрд╛рдореА рдкреНрд▓рдЧрдЗрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:fs.existsSync(path.join(params.targetPackageFilePath, 'migrations')) && new webpack.ContextReplacementPlugin( /knex\/lib\/migrate/, '.', { '/Users/yourusername/yourproject/201706261234_migration.ts': '../../../migrations/201706261234_migration.ts' }), fs.existsSync(path.join(params.targetPackageFilePath, 'seeds')) && new webpack.ContextReplacementPlugin( /knex\/lib\/seed/, '.', { '/Users/yourusername/yourproject/seeds/201706261234_first-seed.ts': '../../../seeds/201706261234_first-seed.ts' }),
рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ knex рдХрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдФрд░ рд╕реАрдб рдХреЛрдб рдЖрдкрдХреЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдФрд░ рдмреАрдЬреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
require
рдкрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ https://github.com/tgriesser/knex/blob/master/ рдХрд░рддрд╛ рд╣реИредрдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓ рдХрд░рддреЗ рд╕рдордп рдХреНрдиреЗрдХреНрд╕ рдХреЛ рдЗрди рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рднреВрдорд┐ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдХрд░рдХреЗ?
рд╡реИрд╕реЗ рднреА, рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореЗрд░реЗ рджрд┐рди рдмрдЪрд╛рдУ, рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред
рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП knex@^0.21.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдореИрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ mysql2
рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрд╛ рдЬрд╛рдПред рдореИрдВрдиреЗ 2 рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рди рд▓рд┐рдП, рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рдереЗред
рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ https://github.com/knex/knex/issues/1128#issuecomment -515573845 рдХреЗ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдорд░реНрдЬ рдХрд░реЗрдВ
externals: [
{
// Possible drivers for knex - we'll ignore them
// comment the one YOU WANT to use
sqlite3: 'sqlite3',
// mysql2: 'mysql2', // << using this one
mariasql: 'mariasql',
mysql: 'mysql',
mssql: 'mssql',
oracle: 'oracle',
'strong-oracle': 'strong-oracle',
oracledb: 'oracledb',
pg: 'pg',
'pg-query-stream': 'pg-query-stream',
}
рдПрдХ рд╡реЗрдмрдкреИрдХ рдкреНрд▓рдЧрдЗрди рднреА рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рдЖрдкрддреНрддрд┐рдЬрдирдХ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рджреЗрдЧрд╛
рд░реЗрдлрд░реА https://github.com/knex/knex/issues/3130#issuecomment -573293311
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ mssql
рдЙрдк-рдбреАрдЖрдИрдЖрд░ рдХрд╛ рд╕рд╣реА рд╕реЗрдЯ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рдХреБрдЫ pg
рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рднреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреНрдиреЗрдХреНрд╕ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред
new webpack.IgnorePlugin(
new RegExp('^(mssql*|mariasql|.oracle.|sqlite3|mssql/.*|tedious|node-pre-gyp)$')
),
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЗрд╕рдореЗрдВ рднреА рднрд╛рдЧ рдЧрдпрд╛ред рдореЗрд░реЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ;