2014-01-18 10 views
2

Я пытаюсь создать приложение командной строки узла. Что я делаю, это извлечение писем из документа, полного информации.Приложение командной строки Nodejs: неожиданный токен `else '

Но когда я запустить команду npm link, чтобы сделать сценарий доступен по всему миру, я получаю эти ошибки:

/c/Users/petfle/AppData/Roaming/npm/email-extract: line 11: syntax error near unexpected token `else' 
/c/Users/petfle/AppData/Roaming/npm/email-extract: line 11: `else ' 

Мой код прошел пыление, и я не могу видеть возможные неточности. Я новичок в узле, поэтому это может быть что-то простое, узкоспециальное, чего я не вижу.

Вот мой код:

#!/c/Program\ Files/nodejs/node 

var file_stream = require('fs'); 

var source = process.argv[2]; 
var output = process.argv[3]; 

file_stream.readFile(source, 'utf8', function (error, data) { 
    var list_of_emails = extract_emails(data); 
    write_to_file(list_of_emails); 
}); 

function extract_emails(data) { 
    return data.match(/([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/g); 
} 

function write_to_file(emails) { 
    file_stream.writeFile(output, emails.join('\n'), 'utf8', function (error) { 
     console.log('Wrote ' + emails.length + ' lines to ' + output); 
    }); 
} 

EDIT: Это работает, если я удалить хижину и запустить его с node myscript.js file.txt file2.txt. Я на окнах.

EDIT 2: Я запускаю это в Git Bash. Даже в окнах он выполнял более простой скрипт с помощью shebang.

+0

Вы пытались удалить [shebang] (http://en.wikipedia.org/wiki/Shebang_ (Unix))? –

+0

Тогда я не могу запустить его как приложение командной строки. Мне нужно указать интерпретатор сценария. – ptf

ответ

1

Он работает в Linux Mint 15 после удаления притон линии и вызова через:

$ node code.js emails emailsOut 

Кроме того, добавив строку OS конкретных #!/usr/bin/node и chmod +x code.js я могу запустить его через

$ ./code.js emails emailsOut 

Windows, к сожалению, не работает с линиями shebang как таковыми. Обходной путь можно найти here.

+0

Я забыл упомянуть, что он работает, если я запустил его с помощью команды 'node' (без shebang). Мне нужен shebang, чтобы он работал как приложение командной строки. Пробовал использовать 'chmod + x', но никакой разницы. Я на окнах. – ptf

+0

@kjelelokk См. Edit. – SomeKittens

+0

Это заставило его работать в командной строке собственных окон. Но, к сожалению, он не работает с Git Bash, поскольку он ищет переводчика. Я выполнил гораздо более простое приложение командной строки в Git Bash с помощью shebang, и это сработало. – ptf

Смежные вопросы