2017-02-28 88 views
1

我有一個腳本,我想通過Heroku CLI運行。這只是一個簡單的腳本,通過Sequelize在postgressql數據庫中創建用戶。 這是腳本:從Heroku CLI運行腳本

const argv = require('yargs').argv; 
const Sequelize = require('sequelize'); 
const sqlizr = require('sqlizr'); 
require('dotenv').load(); 


// Check params 
if (!argv.username) { throw new Error('username is required!'); } 
if (!argv.password) { throw new Error('password is required!'); } 
if (!argv.clientId) { throw new Error('client id is required!'); } 

// Init db connection 
const sequelize = new Sequelize(
    process.env.DB_DATABASE, 
    process.env.DB_USER, 
    process.env.DB_PASS, 
    { 
    host: process.env.DB_HOST, 
    port: 5432, 
    dialect: 'postgres', 
    logging: false 
    } 
) 

var client_id = argv.clientId; 
if(argv.clientId === -1){ 
    client_id = 0; 
} 

console.log(sequelize) 

sqlizr(sequelize, 'api/models/**/*.js'); 

// Check if user exists 
console.log('Check is user exists...'); 
sequelize.models.USERS.count({ 
    where: { 
    USERNAME: argv.username 
    } 
}) 
    .then(result => { 
    if (result > 0) { 
     console.error('user already exists!'); 
     process.exit(1); 
    } 
    }) 
    .then(() => { 
    console.log('Creating user...'); 
    sequelize.models.USERS.create({ 
     USERNAME: argv.username, 
     PASSWORD: argv.password, 
     CLNT_ID: client_id, 
     EMAIL: '[email protected]', 
     PHONE: '123456789' 
    }) 
    .then(result => { 
     console.log('User created successfully!'); 
     }) 
     .catch(error => { 
     console.error('Could not create user!', error); 
     }) 
     .finally(result => { 
     process.exit(1); 
     }); 
    }); 

一切順利的話,如果我執行這個命令在本地:

node bin/createUser.js --username admin --password admin --clientId -1 

但如果我嘗試通過Heroku的CLI這樣運行的:

heroku run bin/createUser.js --username admin --password admin --clientId -1 

我在終端上得到這個:

bin/createUser.js: line 4: syntax error near unexpected token `(' 
bin/createUser.js: line 4: `const yargs = require('yargs');' 

我無法弄清楚我在這裏做錯了什麼。希望有人可以幫我解釋爲什麼會發生這種情況

回答

2

你忘了在命令中指定node,所以我懷疑Heroku試圖運行createUser.js就好像它是一個shell腳本。

您可能需要安裝的node.js buildpack能夠在Heroku上運行的程序,但嘗試:

heroku run node bin/createUser.js --username admin --password admin --clientId -1 
+0

是的,這是問題,謝謝 – Roi