Имам уеб сървър, написан на Node.js, и искам да го стартирам с определена папка. Не съм сигурен как да получа достъп до аргументи в JavaScript. Стартирам node по следния начин:
$ node server.js folder
тук server.js
е кодът на моя сървър. Помощта на Node.js казва, че това е възможно:
$ node -h
Usage: node [options] script.js [arguments]
Как ще получа достъп до тези аргументи в JavaScript? По някакъв начин не успях да намеря тази информация в интернет.
Аргументите се съхраняват в process.argv
Ето документацията на възела за работа с аргументи от командния ред:
process.argv
е масив, съдържащ аргументите от командния ред. Първият елемент ще бъде 'node', а вторият елемент ще бъде името на JavaScript файла. Следващите елементи ще бъдат всички допълнителни аргументи от командния ред.
// print process.argv
process.argv.forEach(function (val, index, array) {
console.log(index + ': ' + val);
});
Това ще генерира:
$ node process-2.js one two=three four
0: node
1: /Users/mjr/work/node/process-2.js
2: one
3: two=three
4: four
За да нормализирам аргументите така, както би ги получила обикновена функция на javascript, правя това в моите shell скриптове node.js:
var args = process.argv.slice(2);
Обърнете внимание, че първият аргумент обикновено е пътят до nodejs, а вторият аргумент е местоположението на скрипта, който изпълнявате.
Проверете библиотеката optimist, тя е много по-добра от ръчното анализиране на опциите на командния ред.
Актуализация
Optimist е изчерпан. Опитайте с yargs, която е активен форк на optimist.