äœæ¥äžã®ãããžã§ã¯ãã§knexã䜿çšããããšããŠããŸãã ç§ãæ±ããŠããåé¡ã¯ãwebpackãå®è¡ããããšãããšãrequiresããã¬ãŒã¹ãã䜿çšããŠãããã€ã³ã¹ããŒã«ãããŠããªããã©ã€ããŒ/æ¹èšãåã蟌ãããšããŠããããšã§ãã
ãããã©ã®ããã«è§£æ±ºã§ãããã«ã€ããŠäœãèãã¯ãããŸããïŒ
``````ãã°
./~/mariasql/lib/Client.jsã®ãšã©ãŒ
ã¢ãžã¥ãŒã«ãèŠã€ãããŸããïŒãšã©ãŒïŒã/ project / node_modules / mariasql/libã®ããã¡ã€ã«ããŸãã¯ããã£ã¬ã¯ããªã../build/Debug/sqlclientã解決ã§ããŸãã
@ ./~/mariasql/lib/Client.js 17ïŒ10-45
./~/knex/lib/dialects/sqlite3/index.jsã®ãšã©ãŒ
ã¢ãžã¥ãŒã«ãèŠã€ãããŸããïŒãšã©ãŒïŒã/ project / node_modules / knex / lib / dialogts/sqlite3ã®ã¢ãžã¥ãŒã«'sqlite3'ã解決ã§ããŸãã
@ ./~/knex/lib/dialects/sqlite3/index.js 33ïŒ11-29
./~/knex/lib/dialects/mysql2/index.jsã®ãšã©ãŒ
ã¢ãžã¥ãŒã«ãèŠã€ãããŸããïŒãšã©ãŒïŒã/ project / node_modules / knex / lib / dialogts/mysql2ã®ã¢ãžã¥ãŒã«'mysql2'ã解決ã§ããŸãã
@ ./~/knex/lib/dialects/mysql2/index.js 33ïŒ11-28
./~/knex/lib/dialects/mysql/index.jsã®ãšã©ãŒ
ã¢ãžã¥ãŒã«ãèŠã€ãããŸããïŒãšã©ãŒïŒã/ project / node_modules / knex / lib / dialogts/mysqlã®ã¢ãžã¥ãŒã«'mysql'ã解決ã§ããŸãã
@ ./~/knex/lib/dialects/mysql/index.js 35ïŒ11-27
./~/knex/lib/dialects/oracle/index.jsã®ãšã©ãŒ
ã¢ãžã¥ãŒã«ãèŠã€ãããŸããïŒãšã©ãŒïŒã/ project / node_modules / knex / lib / dialogts/oracleã®ã¢ãžã¥ãŒã«'oracle'ã解決ã§ããŸãã
@ ./~/knex/lib/dialects/oracle/index.js 40ïŒ11-28
./~/knex/lib/dialects/postgres/index.jsã®ãšã©ãŒ
ã¢ãžã¥ãŒã«ãèŠã€ãããŸããïŒãšã©ãŒïŒã/ project / node_modules / knex / lib / dialogts/postgresã®ã¢ãžã¥ãŒã«'pg'ã解決ã§ããŸãã
@ ./~/knex/lib/dialects/postgres/index.js 46ïŒ11-24
./~/knex/lib/dialects/postgres/index.jsã®ãšã©ãŒ
ã¢ãžã¥ãŒã«ãèŠã€ãããŸããïŒãšã©ãŒïŒã/ project / node_modules / knex / lib / dialogts/postgresã®ã¢ãžã¥ãŒã«'pg-query-stream'ã解決ã§ããŸãã
@ ./~/knex/lib/dialects/postgres/index.js 132ïŒ50-76
./~/knex/lib/dialects/strong-oracle/index.jsã®ãšã©ãŒ
ã¢ãžã¥ãŒã«ãèŠã€ãããŸããïŒãšã©ãŒïŒã/ project / node_modules / knex / lib / dialogts/strong-oracleã®ã¢ãžã¥ãŒã«'strong-oracle'ã解決ã§ããŸãã
@ ./~/knex/lib/dialects/strong-oracle/index.js 15ïŒ9-33```
`` `` ``
ãã®åé¡ãçºçããŸããããwebpackæ§æã®å€éšã«æ£èŠè¡šçŸãè¿œå ãããšä¿®æ£ãããŸããã
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'
}
mariasqlã®åé¡ã«ã€ããŠå ·äœçã«ã³ã¡ã³ãããããšã¯ã§ããŸããããç§ã®åé¡ã解決ããã®ã¯ã䜿çšããªããã¹ãŠã®ãã©ã€ããŒãå€éšãšããŠå®çŸ©ããããšã§ãã ããšãã°ããããžã§ã¯ãã«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ãå«ãããšãã«webpackæ§æãã»ããã¢ããããæ¹æ³ã®åé¡ã®ããã§ã... Webpackãããé©åã«ãµããŒãããããã«knexã«å€æŽãå¿ èŠãªå Žåã¯ãå床éããŸãã
å®éããã®åé¡ã¯ãŸã 解決ãããã¹ãã§ã¯ãªããšæããŸããwebpackã«ã¯ã移è¡ãšã·ãŒãã«é¢ããæªè§£æ±ºã®åé¡ããŸã ãããŸãã
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ã¯ãšã©ãŒã§ã¯ãªãããã§ãããrequireïŒïŒãæååãªãã©ã«ã§äœ¿çšãããªãã£ããšããèŠåã ãã§ããïŒ 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 installãrootãšããŠå®è¡ããããšã¯ãããŸããïŒïŒ
[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',
webpackã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ã䜿çšããŠãµãŒãã¹ã®å®å šãªwebpackãã³ãã«ãäœæããåé¡ã®è§£æ±ºã«åãçµãã§ããããã®ãã³ãã«ããããã°ã©ã ã§ç§»è¡ãå®è¡ããããšãããšãã«ãã®åé¡ã«ééããŸããã @mdlavinã®ææ¡ã«ãããrequireãå®è¡ã§ããŸããããwebpackããœãŒã¹ãã¡ã€ã«ãå€æããŸããã§ããã ãŸããwebpackãã³ãã«ã®åž¯åå€ã®ãã³ãã«ã«ãã®ãã£ã¬ã¯ããªãå«ããå¿ èŠãããããšãæå³ããŸããã
webpackã®ContextReplacementPlugin
ã䜿çšããŠã移è¡ãšã·ãŒãã®åé¡ã解決ã§ããããšãããããŸããã 以äžã¯ç§ã®èšå®ããã®ãµã³ãã«ã§ãïŒtypescriptã§æžãããŠããŸãïŒïŒ
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'
}),
ãããå°ãå解ãããšãåé¡ã¯ãããhttps://github.com/tgriesser/knex/blob/master/ã®ããã«ãknexã®ç§»è¡ãšã·ãŒãã³ãŒããrequire
ãåŒã³åºããŠç§»è¡ãšã·ãŒããããŒãããããšã§ãã src / migrate / index.jsïŒL54ã ããŒãã³ãŒããããæååã®ãã¬ãã£ãã¯ã¹ããµãã£ãã¯ã¹ãªãã§å¿
èŠãªé¢æ°/åŒã®çµæãæž¡ããããwebpackãå®éã«ããŒãããå¯èœæ§ã®ãããã¡ã€ã«ãç¹å®ããããšãããšããããå€æããããã®ååãªæ
å ±ããããŸããã ãããã®ãã©ã°ã€ã³ã¯ãå¿
èŠãªæ
å ±ãwebpackã«æäŸããŸãã
Webpackãšãã³ãã«ãããšãã«ãããããäžèŠã«ããããã«Knexãå€æŽã§ãããã©ããã¯ããããŸããã ãã¶ãããŠãŒã¶ãŒã©ã³ãã§requiresãå®è¡ããããšã«ãã£ãŠïŒ
ãšã«ãããç§ã¯ç§ã®ããã«åãã解決çãå ±æããããšæããŸããã
Angularã§ã®ãã®åé¡ã«é¢ããææ¡ã¯ãããŸããïŒ
Express Projectã䜿çšããŠã¿ãŸããããæ£åžžã§ãïŒãšã©ãŒã¯è¡šç€ºãããŸããïŒã ããããAngularãããžã§ã¯ãã§äœ¿çšãããšã次ã®ãšã©ãŒã衚瀺ãããŸãã
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
ãã¡ã€ã«ã«èšå®ã§ããŸããïŒ
ããããwebpackã§ã
ããã§ä¿®æ£ãããŸããïŒ @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'
}
次ã«ã䜿çšããŠãããã©ã€ããŒããã®ãªã¹ãããåé€ããã ãã§ãwebpackãããããã«ãã«å«ããŸãã
@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ïŒ$ïŒ$ 3 $ïŒ$ã®çžå¯Ÿã€ã³ããŒããæ©èœãããããšãã§ããŸããã§ãããããã¯ã noop.js
ãknexã®å¥¥æ·±ãã«ã€ã³ããŒãããããšããããã§ãã ãã®åçŽãªnode-noop
libãã€ã³ã¹ããŒã«ãããšãããåé¡ãªãåäœããŸããã
2ïŒPostgresã䜿çšããŠãããããæåã®è¡ã®æ£èŠè¡šçŸã¯ãæ€çŽ¢ããä»ã®ãã¹ãŠã®æ£èŠè¡šçŸãšäžèŽããŸãã å¿ãããŸã§ä¿®æ£ããŠãã ããã
2019/10ãªããšãæ©èœãããããšãã§ããŸãããå¥ã®åé¡ã§ç§ã®çããåç §ããŠãã ããhttps://github.com/tgriesser/knex/issues/1446#issuecomment -537715431
pgã®äŸåé¢ä¿ããå€éšããšããŠé 眮ããŸãããããããã§åé¡ã¯è§£æ±ºããŸãããããã¯ãwebpackãããã¯ãšã³ãã®äŸåé¢ä¿ã解æããããšãæå³ããŸããïŒ
ããã«ã¡ã¯çãããç§ã¯knexã䜿çšããŠãµãŒãã¹ã®å®å šãªwebpackãã³ãã«ãäœæããåé¡ã®è§£æ±ºã«åãçµãã§ããããã®ãã³ãã«ããããã°ã©ã ã§ç§»è¡ãå®è¡ããããšãããšãã«ãã®åé¡ã«ééããŸããã @mdlavinã®ææ¡ã«ãããrequireãå®è¡ã§ããŸããããwebpackããœãŒã¹ãã¡ã€ã«ãå€æããŸããã§ããã ãŸããwebpackãã³ãã«ã®åž¯åå€ã®ãã³ãã«ã«ãã®ãã£ã¬ã¯ããªãå«ããå¿ èŠãããããšãæå³ããŸããã
webpackã®
ContextReplacementPlugin
ã䜿çšããŠã移è¡ãšã·ãŒãã®åé¡ã解決ã§ããããšãããããŸããã 以äžã¯ç§ã®èšå®ããã®ãµã³ãã«ã§ãïŒtypescriptã§æžãããŠããŸãïŒïŒ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' }),
ãããå°ãå解ãããšãåé¡ã¯ãããhttps://github.com/tgriesser/knex/blob/master/ã®ããã«ãknexã®ç§»è¡ãšã·ãŒãã³ãŒãã
require
ãåŒã³åºããŠç§»è¡ãšã·ãŒããããŒãããããšã§ãã src / migrate / index.jsïŒL54ã ããŒãã³ãŒããããæååã®ãã¬ãã£ãã¯ã¹ããµãã£ãã¯ã¹ãªãã§å¿ èŠãªé¢æ°/åŒã®çµæãæž¡ããããwebpackãå®éã«ããŒãããå¯èœæ§ã®ãããã¡ã€ã«ãç¹å®ããããšãããšããããå€æããããã®ååãªæ å ±ããããŸããã ãããã®ãã©ã°ã€ã³ã¯ãå¿ èŠãªæ å ±ãwebpackã«æäŸããŸããWebpackãšãã³ãã«ãããšãã«ãããããäžèŠã«ããããã«Knexãå€æŽã§ãããã©ããã¯ããããŸããã ãã¶ãããŠãŒã¶ãŒã©ã³ãã§requiresãå®è¡ããããšã«ãã£ãŠïŒ
ãšã«ãããç§ã¯ç§ã®ããã«åãã解決çãå ±æããããšæããŸããã
ç§ã®æ¥ãæã£ãŠãã ãããã©ããããããšãã
解決çãæ¢ããŠãã人ã®ããã«ãããã¯knex@^0.21.1ã䜿çšããŠç§ã®ããã«åããŸãããç§ã¯mysql2
ãã©ã€ããŒãä¿æãããã£ãã§ãã ç§ã¯2ã€ã®æ¢åã®ãœãªã¥ãŒã·ã§ã³ãæ¡çšããŸããã
webpackæ§æã§ã 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',
}
ãŸããåé¡ã®ããããã±ãŒãžãé€å€ããwebpackãã©ã°ã€ã³ãè¿œå ããŸã
ref https://github.com/knex/knex/issues/3130#issuecomment -573293311
mssql
ãµããã£ã¬ã¯ããªã®æ£ããã»ãããå«ãããŠãŒã¹ã±ãŒã¹ã§æ£ããé€å€ããããã«ããŸãKnexãæ©èœããããã«å¿
èŠãªããã€ãã®pg
ããã±ãŒãžãèš±å¯ããããã«ããªãªãžãã«ãå€æŽããŸãã
new webpack.IgnorePlugin(
new RegExp('^(mssql*|mariasql|.oracle.|sqlite3|mssql/.*|tedious|node-pre-gyp)$')
),
æãåèã«ãªãã³ã¡ã³ã
ãŸããããã«ééããŸããã ç§ã®ããã«åããã®;