2017-03-17 151 views
0

我想创建一个用户在我的package.json脚本中使用js文件,但是当我通过npm run create_admin运行脚本时,用户不会被创建并且不会引发错误。一些快速调试使我相信Account.register没有被调用。使用npm脚本创建新用户

的package.json脚本 -

"scripts": { 
"start": "node bin/www", 
"test": "mocha --recursive", 
"create_admin": "node scripts/create_admin"} 

create_admin.js -

var prompt = require('prompt'), 
    Account = require('../models/account'), 
    util = require('../utility/utility'); 

var schema = { 
    properties: { 
     username: { 
      pattern: /^[a-zA-Z\s\-]+$/, 
      message: 'Username must contain only letters, spaces, or dashes.', 
      required: true, 
      description: 'Enter username' 
    }, 
     password: { 
      hidden: true, 
      required: true, 
      description: 'Enter password' 
     }, 
     confirmPassword: { 
      hidden: true, 
      required: true, 
      description: 'Confirm password' 
     } 
    } 
}; 

prompt.start(); 
prompt.get(schema, function(err, result) { 
    if (result.password === result.confirmPassword) { 
     var newAccount = { 
      username: result.username, 
      isAdmin: true, 
      regDate: Date.now(), 
      lastLogin: Date.now() 
     }; 
     Account.register(new Account(newAccount), result.password, function(err, account) { 
      if (err) { 
       console.log('Username already in use. Please try another username'); 
      } else { 
       console.log('Admin account created'); 
      } 
     }); 
    } else { 
     console.log('Error - passwords do not match'); 
    } 
}); 

任何帮助表示赞赏。

回答

0

我的头靠在墙上撞了一会儿,试图解决这个问题后,我发现我忽略了require我的应用程序。添加固定的问题并调用Account.register

更新包括应用程序 -

var app = require('../app'), 
    prompt = require('prompt'), 
    Account = require('../models/account'), 
    util = require('../utility/utility'); 


var schema = { 
    properties: { 
     username: { 
      pattern: /^[a-zA-Z\s\-]+$/, 
      message: 'Username must contain only letters, spaces, or dashes.', 
      required: true, 
      description: 'Enter username' 
     }, 
     password: { 
      hidden: true, 
      required: true, 
      description: 'Enter password' 
     }, 
     confirmPassword: { 
      hidden: true, 
      required: true, 
      description: 'Confirm password' 
     } 
    } 
}; 

prompt.start(); 
prompt.get(schema, function(err, result) { 
    if (result.password === result.confirmPassword) { 
     var newAccount = { 
      username: result.username, 
      isAdmin: true, 
      regDate: Date.now(), 
      lastLogin: Date.now() 
     }; 
     Account.register(new Account(newAccount), result.password, function(err, account) { 
      if (err) { 
       console.log('Username already in use. Please try another username'); 
      } else { 
       console.log('Admin account created'); 
      } 
     }); 
    } else { 
     console.log('Error - passwords do not match'); 
    } 
});