Reputation: 1376
On the way of installing Webpack on my React Project, the following problem hinders my progress:
last step to configure the Webpack
npm run build && node ./dist/main.js
Error on Windows Power Shell / on 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 which promised to configure the webpack
https://developerhandbook.com/webpack/webpack-4-from-absolute-scratch/
https://developerhandbook.com/webpack/how-to-configure-scss-modules-for-webpack/
Upvotes: 96
Views: 160730
Reputation: 119
The message error mean you need to run each command seperatly. That happens with me in installing bootstrap at Laravel.
First run npm install
then run npm run dev
Upvotes: 0
Reputation: 29
I have solved the issue by upgrading powershell and renamed dir. path folder name by removing spaces. Now it works properly.
Powershell upgradation link
https://github.com/PowerShell/PowerShell#get-powershell
Upvotes: 2
Reputation: 1
this works just fine using Git bash.
just check it out...
Example
user@DevKitchen MINGW64 ~/OneDrive/Documents/BL_proxy/portfolio (master) $ cd src && mkdir content && cd content && touch navbar.js about.js services.js projects.js
Upvotes: -1
Reputation: 11
This works for me:
npm run build; if ($?) { node ./dist/main.js }
Just like the command in cmd:
npm run build && node ./dist/main.js
Upvotes: 0
Reputation: 312
in the ps terminal for vs code or phpstorm just replace the && with , and hit run Instead of
npm install && npm run dev
Do
npm install; npm run dev
Upvotes: 1
Reputation: 496
Having this issue on the Windows terminal. Solution is to use ;
instead &&
like:
git fetch --all ; git add --all ; git commit -m 'updating things' ; git push
Upvotes: -1
Reputation: 99
Since some people might arrive here in the same manner as I did, wondering why PowerShell would not allow me to perform a conditional AND operator between two variables within an if statement.
I solved it by evaluating the Left Condition with an If condition, and then the Right Condition immediately within the first true condition.
Example that produced the 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"
Example that I used to solve the problem:
$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
}
}
Upvotes: 1
Reputation: 439437
PowerShell (Core) v7+ - but not Windows PowerShell - now does support &&
and ||
, the pipeline-chain operators, so your command should work as-is there - see this answer for PowerShell-specific considerations for their use; see below for Windows PowerShell workarounds.
Conceptual note:
In all shells that support it (notably cmd.exe
and POSIX-compatible shells such as Bash), &&
conditionally sequences commands: it executes its RHS command only if the LHS command indicated success; ||
is the inverse: it executes the RHS only if the LHS indicated failure.
This is important for preventing execution when it makes no sense to do so; e.g., in npm run build && node ./dist/main.js
it only makes sense to run what was just built (with node
) if the build succeeded, which is what &&
ensures.
Windows PowerShell workarounds:
The most succinct workaround:
npm run build; if ($?) { node ./dist/main.js }
This builds on the automatic $?
variable, which is a Boolean indicating whether the most recent command succeeded.
The most robust workaround, needed if the commands use 2>
redirections:
npm run build; if ($LASTEXITCODE -eq 0) { node ./dist/main.js }
Basing the success test on the automatic $LastExitCode
variable, which reflects the process exit code of the most recently executed external program, avoids problems in Windows PowerShell[1] where the presence of stderr output in combination with redirecting it via 2>
mistakenly sets $?
to $false
even when the process exit code is 0
.
[1] The problems with 2>
redirections are summarized in this answer. They also plague PowerShell (Core) up to version 7.1
Upvotes: 32
Reputation: 903
I found that within PowerShell as my terminal within VS Code
, replacing &&
in the command with ;
did the trick.
Upvotes: 77
Reputation: 7558
It's because you're in PowerShell, try running it in CMD
or Git Bash
Alternatively (if you wish to continue in PS):
(npm run build) -and (node ./dist/main.js)
3rd Alternative, just run them separetly,
Upvotes: 129
Reputation: 4544
The &&
operator is used in linux bash
to run both commands after each other. (Also if the first command fails, the second won't be executed)
This does not work in PowerShell on Windows so just split both commands and run them separately:
npm run build
node ./dist/main.js
For completeness, Powershell can behave the same when you do (command1) -and (command2)
and &&
might actually work depending on your PowerShell version.
See this for further info: https://stackoverflow.com/a/564092/2232127
Upvotes: 9