将 knex 与 es6 模块一起使用

Posted

技术标签:

【中文标题】将 knex 与 es6 模块一起使用【英文标题】:use of knex with es6 modules 【发布时间】:2020-07-03 19:39:19 【问题描述】:

我正在做一个完全基于 ES6 模块的项目,我在集成 knex 尤其是 knex CLI 时遇到了一些困难

我可以使用 knex(没有 CLI):


 const config = 
  client: 'mysql2',

  connection:  
    host : "localhost", 
    user : "tata",  
    password : "tata",  
    database : "tata",

  ,


const myknex = knex(config )

export default myknex

但这不允许使用 knex CLI...

所以我创建了一个带有 .knex/knexfile.js 文件和 .knex/package.json 文件的 knexfile 模块:

//knexfile.js
module.exports =  

  development: 
    client: 'sqlite3',
    connection: 
      filename: './dev.sqlite3'
    ,
    useNullAsDefault : true
  ,

  production: 
    client: 'mysql2',  
    connection:  
      host : "localhost", 
      user : "tata",  
      password : "tata",  
      database : "tata",

    ,  
    migrations: 
      tableName: 'knex_migrations'
    
  

;
//package.json

  "name": "knexfile",
  "version": "1.0.0",
  "description": "",
  "main": "knexfile.js",
  "scripts": 
    "test": "echo \"Error: no test specified\" && exit 1"
  ,
  "keywords": [],
  "author": "",
  "license": "ISC"

我可以在我的项目中添加一个 knexfile 模块

"dependencies": 
    "knexfile": "file:./knex",
    ...

我可以毫无顾虑地导入配置

import knex from 'knex'
import knexfile from 'knexfile'

const myknex = knex(knexfile.developpement)
//const myknex = knex(knexfile.production)

export default myknex

但是我必须指定开发或生产,ENV 不像 knex CLI 那样管理

如何在 ES6 项目中更简单有效地使用 knex 和 knex CLI?

提前谢谢你

【问题讨论】:

【参考方案1】:

您可以定义环境变量NODE_PROFILE=production,以便 CLI 自动选择生产配置。如果您愿意,可以在应用程序代码中使用相同的 env 变量,如下所示:

import knex from 'knex'
import knexfile from 'knexfile'

const myknex = knex(knexfile[process.env.NODE_PROFILE])

export default myknex

【讨论】:

以上是关于将 knex 与 es6 模块一起使用的主要内容,如果未能解决你的问题,请参考以下文章

将 ES6 模块与 WebPack 一起使用,为啥仍然需要 require

不能将 dotenv 与 ES6 模块一起使用

如何将 ES6 导入与“请求”npm 模块一起使用

如何将 ES6、AMD 和 CJS 模块与 JSPM 和系统 js 一起使用?

使用 Knex.js 和 PostgreSQL 设置 Docker

如何将 Babel 与 Electron 一起使用?