Estoy aprendiendo node.js y quiero obtener las entradas del usuario y escribirlas en un archivo llamado points.txt
const process = require("process") const fs = require("fs") const [, , num1,num2,num3,num4] = process.argv fs.writeFileSync('points.txt', process.argv[2,3,4,5]) node app.js 1 2 3 4Sin embargo, con este código, solo veo 4 Si tuviera que ir a los puntos.txt. Debería ver 1 2 3 4
La expresión process.argv[2,3,4,5] redunda en process.argv[5] (esos operadores de coma solo evalúan cada int y el valor de la expresión completa termina como el valor del último int).
Dado que el código ha asignado los parámetros que quiere escribir como las variables num , escríbalas...
const process = require("process") const fs = require("fs") const [, , num1,num2,num3,num4] = process.argv console.log(num1, num2, num3, num4) fs.writeFileSync('points.txt', [num1,num2,num3,num4])No puede usar el operador , para obtener varios valores de esa manera. El operador de coma devuelve su último operando, por lo que su código es igual a process.argv[5] , que debería devolver 4 en este caso. En su lugar, puede utilizar el slice de división:
process.argv.slice(2);El método
slice()devuelve una copia superficial de una parte de una matriz en un nuevo objeto de matriz seleccionado de principio a fin (no se incluye el final), donde el inicio y el final representan el índice de los elementos de esa matriz. La matriz original no se modificará.
Para convertir la matriz devuelta de la llamada de slice en una cadena, puede usar el método de join : process.argv.slice(2).join(' ')