I'm trying to implement Knex migrations with async/await in combination with babel-cli and babel-preset-env, but I'm not sure it's supported in its current implementation. Can someone shed some light on this matter?
This is my migration file:
export const up = async (knex, Promise) => {
return await knex.schema.createTableIfNotExists('user')
}
export const down = async (knex, Promise) => {
return await knex.schema.dropTableIfExists('user')
}
I'm calling Knex using an NPM script as such:
"scripts": {
"knex": "babel-node ./node_modules/.bin/knex"
}
My .babelrc file looks like this:
{
"presets": ["env"]
}
This is the output in the terminal:
$ yarn run knex migrate:latest
yarn run v0.19.1
$ babel-node ./node_modules/.bin/knex migrate:latest
Using environment: development
Knex:warning - sqlite does not support inserting default values. Set the `useNullAsDefault` flag to hide this warning. (see docs http://knexjs.org/#Builder-insert).
Knex:warning - migrations failed with error: A callback function must be supplied to calls against `.createTable` and `.table`
TypeError: A callback function must be supplied to calls against `.createTable` and `.table`
at new TableBuilder (/Users/deniz/Code/example/node_modules/knex/lib/schema/tablebuilder.js:47:11)
at Client_SQLite3.tableBuilder (/Users/deniz/Code/example/node_modules/knex/lib/client.js:143:12)
at SchemaCompiler_SQLite3.createTableIfNotExists (/Users/deniz/Code/example/node_modules/knex/lib/schema/compiler.js:59:31)
at SchemaCompiler_SQLite3.toSQL (/Users/deniz/Code/example/node_modules/knex/lib/schema/compiler.js:51:26)
at SchemaBuilder.toSQL (/Users/deniz/Code/example/node_modules/knex/lib/schema/builder.js:57:43)
at /Users/deniz/Code/example/node_modules/knex/lib/runner.js:52:32
at tryCatcher (/Users/deniz/Code/example/node_modules/bluebird/js/release/util.js:16:23)
at /Users/deniz/Code/example/node_modules/bluebird/js/release/using.js:185:26
at tryCatcher (/Users/deniz/Code/example/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/Users/deniz/Code/example/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/Users/deniz/Code/example/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/Users/deniz/Code/example/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/Users/deniz/Code/example/node_modules/bluebird/js/release/promise.js:693:18)
at Promise._fulfill (/Users/deniz/Code/example/node_modules/bluebird/js/release/promise.js:638:18)
at PromiseArray._resolve (/Users/deniz/Code/example/node_modules/bluebird/js/release/promise_array.js:126:19)
at PromiseArray._promiseFulfilled (/Users/deniz/Code/example/node_modules/bluebird/js/release/promise_array.js:144:14)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Error says:
Knex:warning - migrations failed with error: A callback function must be supplied to calls against `.createTable` and `.table`
TypeError: A callback function must be supplied to calls against `.createTable` and `.table`
http://knexjs.org/#Schema-createTable