Manghud
En camino de instalar paquete web en mi React Project, el siguiente problema dificulta mi progreso:
último paso para configurar el Webpack
npm run build && node ./dist/main.js
Error en Windows Power Shell/en Visual Studio Code
PS C:\Users\pythonbuddha\Desktop\to_experiment\to-do-list> npm run build && node ./dist/main.js
At line:1 char:15
+ npm run build && node ./dist/main.js
+ ~~
The token '&&' is not a valid statement separator in this version.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : InvalidEndOfLine
Tutorial que prometía configurar el webpack.
https://developerhandbook.com/webpack/webpack-4-from-absolute-scratch/
https://developerhandbook.com/webpack/how-to-configure-scss-modules-for-webpack/
Es porque está en PowerShell, intente ejecutarlo en CMD
o Git Bash
Alternativamente (si desea continuar en PS):
(npm run build) -and (node ./dist/main.js)
Tercera alternativa, simplemente ejecútelos por separado,
-
funcionó para el problema de la línea de comando pero creó un problema relacionado con React.
– Manghud
8 de enero de 2021 a las 11:08
-
Buen punto sobre la necesidad de un comando diferente en Windows PowerShell (aunque ya no en PowerShell (Core) 7+), pero es importante tener en cuenta que PowerShell
-and
y-or
los operadores son no reemplazos para&&
y||
– funcionan de manera fundamentalmente diferente, descartando efectivamente la salida estándar y devolviendo un solo booleano en su lugar – vea la sección inferior de esta respuesta.– mklement0
23 de marzo de 2021 a las 13:51
-
Yo diría que mencionar el
-and
alternativa es un poco engañosa ya que dudo que la gente normalmente quiera lo que-and
hace (ciertamente no quería eso y solo me di cuenta de esto cuando mi comando se estaba ejecutando). La respuesta solo debe mencionar que para lograr lo mismo en Powershell, use PowerShell versión 7+.– István Siroki
26 oct 2021 a las 15:32
-
Buen punto. Resolvió mi problema. Estaba probando en la terminal.
– Nadeesha Nawagaththegama
2 de noviembre de 2022 a las 7:05
sam patankar
Descubrí que dentro de PowerShell como mi terminal dentro VS Code
reemplazando &&
en el mando con ;
Hizo el truco.
-
;
es el separador de declaraciones en PowerShell, lo que resulta en incondicional secuencia de comandos, análoga a&
encmd.exe
– esto es no lo mismo que&&
que solo ejecuta el comando RHS si el comando LHS tuvo éxito.– mklement0
26 de abril de 2022 a las 20:26
-
probado, si funciona bien. Por ejemplo: “` git add –all ; git commit -m ‘prueba’; empujar git “`
– Leo Lanese
25 oct 2022 a las 11:16
-
@LeoLanese “funciona” si no encontró ningún error en la cadena de ejecución, a lo que se refiere el OP es
conditional execution
,&&
normalmente se usa para cadenas de comando que solo pueden continuar la ejecución cuando el anterior fue exitoso, aquí hay un ejemplo de mala práctica para trabajar en una ubicación restringida de escritura,md "C:\Program Files\test"; cd "C:\Program Files\test"; git init
va agit init
en su directorio actual, podría ser peor… La respuesta de @mklement0 es la más apropiada, y sigue siendo un problema/solución válida cuando usamos el PS de Windows 10 estándar– Jonny Soe
9 de febrero a las 12:44
mklement0
PowerShell (núcleo) v7+ – pero no Windows PowerShell – ahora hace apoyo &&
y ||
el operadores de cadenas de oleoductosentonces su comando debería funcionar como está allí – consulte esta respuesta para conocer las consideraciones específicas de PowerShell para su uso; consulte a continuación las soluciones alternativas de Windows PowerShell.
Nota conceptual:
-
En todas las conchas que lo soportan (en particular
cmd.exe
y shells compatibles con POSIX como Bash),&&
condicionalmente ordena secuencias: ejecuta su comando RHS solo si el comando LHS indicado éxito;||
es el inverso: ejecuta el RHS solo si el LHS indicado falla. -
Esto es importante para evitar la ejecución cuando no tiene sentido hacerlo; por ejemplo, en
npm run build && node ./dist/main.js
solo tiene sentido ejecutar lo que se acaba de construir (connode
) si la construcción tuvo éxitoQue es que&&
asegura.
Windows PowerShell soluciones alternativas:
El mayoría sucinto solución alterna:
npm run build; if ($?) { node ./dist/main.js }
Esto se basa en el automático $?
variableque es un valor booleano que indica si el comando más reciente tuvo éxito.
El mayoría robusto solución alternativa, necesaria si los comandos usan 2>
redirecciones:
npm run build; if ($LASTEXITCODE -eq 0) { node ./dist/main.js }
Basando la prueba de éxito en la automático $LastExitCode
variableque refleja la código de salida del proceso de los más recientemente ejecutados programa externoevita problemas en Windows PowerShell[1] donde la presencia de estándar salida en combinación con la redirección a través de 2>
establece por error $?
a $false
incluso cuando el código de salida del proceso es 0
.
[1] Los problemas con 2>
las redirecciones se resumen en esta respuesta. También plagan PowerShell (Core) hasta la versión 7.1
El &&
el operador se usa en linux bash
para ejecutar ambos comandos uno tras otro. (Además, si falla el primer comando, el segundo no se ejecutará)
Esto no funciona en PowerShell en Windows, así que simplemente divida ambos comandos y ejecútelos por separado:
npm run build
node ./dist/main.js
Para completar, Powershell puede comportarse de la misma manera cuando lo hace (command1) -and (command2)
y &&
en realidad podría funcionar dependiendo de su versión de PowerShell.
Consulte esto para obtener más información: https://stackoverflow.com/a/564092/2232127
amén trivandrum
Resolví el problema actualizando powershell y renombré dir. nombre de la carpeta de ruta eliminando espacios. Ahora funciona correctamente.
Enlace de actualización de Powershell
-
Sí, como se mencionó anteriormente, las versiones 7.0 y superiores de PowerShell (Core) ahora admiten
&&
y||
. No está claro cómo se relacionan los espacios en los nombres de las carpetas con esto. Además, sugiero no usar un vínculo a una versión preliminar obsoleta de PowerShell. Para los usuarios que actualmente usan el legado, viene con el sistema operativo Windows PowerShell edición, cambiando a multiplataforma, instalación bajo demanda PowerShell (núcleo) edition es más que una simple actualización: requiere una migración muy deliberada y la conciencia de que cierto código existente puede romperse.– mklement0
26/04/2022 a las 20:46
jpg grande
Dado que algunas personas pueden llegar aquí de la misma manera que yo, preguntándome por qué PowerShell no me permite realizar un operador AND condicional entre dos variables dentro de una declaración if.
Lo resolví evaluando la Condición Izquierda con una condición Si, y luego la Condición Derecha inmediatamente dentro de la primera condición verdadera.
Ejemplo que produjo el error:
$Path = "C:\\Temp\test"
$RootPath = "C:\\Temp"
$currentChildren = Get-ChildItem -Force -LiteralPath $Path
$isEmpty = $currentChildren -eq null
if ($isEmpty && $Path -ne $RootPath) {
Remove-Item -Force -LiteralPath $Path
}
$foo = "question"
$bar = "answer"
Ejemplo que usé para resolver el problema:
$Path = "C:\\Temp\test"
$RootPath = "C:\\Temp"
$currentChildren = Get-ChildItem -Force -LiteralPath $Path
$isEmpty = $currentChildren -eq null
if ($isEmpty) {
if ($Path -ne $RootPath) {
Remove-Item -Force -LiteralPath $Path
}
}
-
Sí, como se mencionó anteriormente, las versiones 7.0 y superiores de PowerShell (Core) ahora admiten
&&
y||
. No está claro cómo se relacionan los espacios en los nombres de las carpetas con esto. Además, sugiero no usar un vínculo a una versión preliminar obsoleta de PowerShell. Para los usuarios que actualmente usan el legado, viene con el sistema operativo Windows PowerShell edición, cambiando a multiplataforma, instalación bajo demanda PowerShell (núcleo) edition es más que una simple actualización: requiere una migración muy deliberada y la conciencia de que cierto código existente puede romperse.– mklement0
26/04/2022 a las 20:46
leo lanese
Tener este problema en la terminal de Windows. La solución es usar ;
en cambio &&
como:
git fetch --all ; git add --all ; git commit -m 'updating things' ; git push