NodeJS db-migrate TypeError:无法读取属性' 1'为null

时间:2016-02-02 17:32:45

标签: node.js npm dbmigrate

我刚刚将nodejs软件包db-migrate安装到现有的nodejs项目中。对于与DB的连接,似乎所有内容都已正确配置。

Database.json:

{
    "development": "postgres://blabla",
    "production": "postgres://blabla"
}

迁移:

var dbm = global.dbm || require('db-migrate');
var type = dbm.dataType;

exports.up = function(db, callback) {
    db.createTable('users', {
        id: { type: 'int', primaryKey: true, autoIncrement: true },
        username: { type: 'string', unique: true }
        }, callback);
};

exports.down = function(db, callback) {
    db.dropTable('users', callback);
};

每当我尝试运行db-migrate up(包括指定数据库文件,迁移,迁移次数等参数的任何变化)时,该命令每次都会引发错误:

[ERROR] TypeError: Cannot read property '1' of null
   at Class.extend.parseName (C:\Users\test\Projects\nodejs\cirio-crm\node_modules\db-migrate\lib\skeleton.js:162:17)
   at Class.Skeleton.extend.init (C:\Users\test\Projects\nodejs\cirio-crm\node_modules\db-migrate\lib\migration.js:35:24)
   at Class.prototype.(anonymous function) [as init] (C:\Users\test\Projects\nodejs\cirio-crm\node_modules\db-migrate\lib\class.js:36:24)
   at new Class (C:\Users\test\Projects\nodejs\cirio-crm\node_modules\db-migrate\lib\class.js:49:17)
   at C:\Users\test\Projects\nodejs\cirio-crm\node_modules\db-migrate\lib\migration.js:312:14
   at Array.map (native)
   at C:\Users\test\Projects\nodejs\cirio-crm\node_modules\db-migrate\lib\migration.js:311:35
   at FSReqWrap.oncomplete (fs.js:95:15)

我尝试重命名表,更改字段,弄乱CRLF行结尾,安装不同版本的nodejs和db-migrate等。

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

在圈子跑了大约一个小时后,我意识到迁移的名称不正确。它的第一部分只指定日期而不是时间。要使用的正确文件名格式为yyyyMMddhhmmss-<some text>

之前(差):20160101-testmigration

之后(好):20160101000000-testmigration

虽然错误可能更明确......

修改

正如@ 2Toad所指出的那样,必须要小心存储在应该找到迁移的文件夹中的内容。如果您有任何*.js文件不遵循命名格式,如帮助程序JS文件,则会发生相同的错误。