【发布时间】:2014-01-18 19:05:18
【问题描述】:
我正在尝试创建一个节点命令行应用程序。 我正在做的是从一个充满信息的文档中提取电子邮件。
但是当我运行命令 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 '
我的代码通过了 linting,我看不到任何错误。我是节点新手,所以它可能是一些我看不到的简单的节点特定的东西。
这是我的代码:
#!/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);
});
}
编辑:
如果我删除 shebang 并使用 node myscript.js file.txt file2.txt 运行它,它会起作用。我在窗户上。
编辑 2: 我在 Git Bash 中运行它。即使在 Windows 上,它也确实可以使用 shebang 运行更简单的脚本。
【问题讨论】:
-
你试过删除shebang吗?
-
那我不能将它作为命令行应用程序运行。我需要指定脚本解释器。
标签: node.js