2014-01-18 65 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); 
    }); 
} 

編輯: 如果我刪除了家當,並與node myscript.js file.txt file2.txt運行它的工作原理。我在窗戶上。編輯2: 我在Git Bash中運行這個。即使在Windows上,它也可以在shebang上運行更簡單的腳本。

+0

您是否嘗試刪除[shebang](http://en.wikipedia.org/wiki/Shebang_(Unix))? –

+0

然後我無法將它作爲命令行應用程序運行。我需要指定腳本解釋器。 – ptf

回答

1

它工作在Linux Mint的15 去除家當線並調用它通過:

$ node code.js emails emailsOut 

還加入了特定的OS-線#!/usr/bin/nodechmod +x code.js我可以運行它通過

$ ./code.js emails emailsOut 

不幸的是,Windows不支持shebang行。解決方法可以找到here

+0

我忘記提及它的作品,如果我用'node'命令(沒有shebang)運行它。我需要shebang來作爲命令行應用程序。嘗試使用'chmod + x',但沒有區別。我在窗戶上。 – ptf

+0

@kjelelokk見編輯。 – SomeKittens

+0

這使它在本機窗口命令行中工作。但不幸的是,它不適用於Git Bash,因爲它尋找解釋器。我在Git Bash中運行了一個更簡單的命令行應用程序,它與shebang一起工作。 – ptf