为什么 yarn knex 不在本地回购中迁移
Why yarn knex is not migrating in local repo
当我 运行 宁 yarn knex migrate:make init
时,出现此错误
Failed to resolve config file, knex cannot determine where to generate migrations
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
at validateString (internal/validators.js:120:11)
at Object.resolve (path.js:139:9)
at D:\NEXT-JS\pen-neuton\server\node_modules\knex\lib\migrations\migrate\MigrationGenerator.js:77:19
at Array.map (<anonymous>)
at MigrationGenerator._absoluteConfigDirs (D:\NEXT-JS\pen-neuton\server\node_modules\knex\lib\migrations\migrate\MigrationGenerator.js:71:24)
at MigrationGenerator._ensureFolder (D:\NEXT-JS\pen-neuton\server\node_modules\knex\lib\migrations\migrate\MigrationGenerator.js:28:23)
at MigrationGenerator.make (D:\NEXT-JS\pen-neuton\server\node_modules\knex\lib\migrations\migrate\MigrationGenerator.js:20:16)
at Migrator.make (D:\NEXT-JS\pen-neuton\server\node_modules\knex\lib\migrations\migrate\Migrator.js:320:27)
at Command.<anonymous> (D:\NEXT-JS\pen-neuton\server\node_modules\knex\bin\cli.js:218:10)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
error Command failed with exit code 1.
knexfile.js
require("dotenv").config();
module.exports = {
development: {
client: "pg",
useNullAsDefault: true,
debug: process.env.NODE_ENV === 'development',
connection: {
host: process.env.POSTGRES_DEV_HOST,
port: process.env.POSTGRES_DEV_PORT,
user: process.env.POSTGRES_DEV_USER,
password: process.env.POSTGRES_DEV_PASSWORD,
database: process.env.POSTGRES_DEV_DATABASE
},
migrations: {
directory: "./migrations"
},
seeds: {
directory: "./seeds"
}
}
};
database/index.js
const knexfile = require('./knexfile')
const debug = require('debug')
const knex = require('knex')
const util = require('util')
const log = debug('app:db')
const env = process.env.NODE_ENV
const config = knexfile[env]
log(`Connected to ${config.client} with parameters: ${util.inspect(config.connection, { colors: true })}`)
module.exports = knex(config)
有人建议我在全局安装 Knex,运行 knex migrate:make init
并且成功了。但我想知道它对生产有好处吗?
感谢 Mic Fung 我得到了这个解决方案,
yarn knex migrate:make init --knexfile=./config/knexfile.js
如果你们有不同的解决方案,请分享。
当我 运行 宁 yarn knex migrate:make init
时,出现此错误
Failed to resolve config file, knex cannot determine where to generate migrations
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
at validateString (internal/validators.js:120:11)
at Object.resolve (path.js:139:9)
at D:\NEXT-JS\pen-neuton\server\node_modules\knex\lib\migrations\migrate\MigrationGenerator.js:77:19
at Array.map (<anonymous>)
at MigrationGenerator._absoluteConfigDirs (D:\NEXT-JS\pen-neuton\server\node_modules\knex\lib\migrations\migrate\MigrationGenerator.js:71:24)
at MigrationGenerator._ensureFolder (D:\NEXT-JS\pen-neuton\server\node_modules\knex\lib\migrations\migrate\MigrationGenerator.js:28:23)
at MigrationGenerator.make (D:\NEXT-JS\pen-neuton\server\node_modules\knex\lib\migrations\migrate\MigrationGenerator.js:20:16)
at Migrator.make (D:\NEXT-JS\pen-neuton\server\node_modules\knex\lib\migrations\migrate\Migrator.js:320:27)
at Command.<anonymous> (D:\NEXT-JS\pen-neuton\server\node_modules\knex\bin\cli.js:218:10)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
error Command failed with exit code 1.
knexfile.js
require("dotenv").config();
module.exports = {
development: {
client: "pg",
useNullAsDefault: true,
debug: process.env.NODE_ENV === 'development',
connection: {
host: process.env.POSTGRES_DEV_HOST,
port: process.env.POSTGRES_DEV_PORT,
user: process.env.POSTGRES_DEV_USER,
password: process.env.POSTGRES_DEV_PASSWORD,
database: process.env.POSTGRES_DEV_DATABASE
},
migrations: {
directory: "./migrations"
},
seeds: {
directory: "./seeds"
}
}
};
database/index.js
const knexfile = require('./knexfile')
const debug = require('debug')
const knex = require('knex')
const util = require('util')
const log = debug('app:db')
const env = process.env.NODE_ENV
const config = knexfile[env]
log(`Connected to ${config.client} with parameters: ${util.inspect(config.connection, { colors: true })}`)
module.exports = knex(config)
有人建议我在全局安装 Knex,运行 knex migrate:make init
并且成功了。但我想知道它对生产有好处吗?
感谢 Mic Fung 我得到了这个解决方案,
yarn knex migrate:make init --knexfile=./config/knexfile.js
如果你们有不同的解决方案,请分享。