2017-02-28 9 views
1

Ich habe ein Skript, das ich über die Heroku CLI ausführen möchte. Es ist nur ein einfaches Skript, um einen Benutzer in einer postgressql Datenbank mit Sequelize zu erstellen. Dieses ist das Skript:Laufendes Skript von 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); 
     }); 
    }); 

Alles geht gut, wenn ich diesen Befehl ausführen lokal:

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

Aber wenn ich versuchen, dies durch die Heroku CLI laufen wie folgt aus:

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

Ich bekomme das im Terminal:

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

Ich kann nicht herausfinden, was ich hier falsch mache. Hoffentlich kann jemand mir helfen und erklären, warum das passiert

Antwort

2

Sie haben vergessen, node in dem Befehl anzugeben, so vermute ich, dass Heroku versucht, createUser.js als ob es ein Shell-Skript ausführen würde.

Möglicherweise müssen Sie eine node.js buildpack installieren, um das Programm auf Heroku laufen, aber versuchen:

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

Ja das war das Problem, danke – Roi

Verwandte Themen