我有一个Docker脚本,我已经使用了一段时间来编译js和css。我买了一台新的笔记本电脑,现在完全相同的脚本抛出了这个错误:
Running npm run build
invalid argument
"type=bind,source=\"$path\\src/MyProject/wwwroot/dist\",dst=/work/wwwroot/dist" for "--mount" flag: parse error on line 1, column 18: bare " in non-quoted-field
See 'docker run --help'.
运行docker的实际脚本:
param (
[string]$target = "build"
)
Write-Host "Running npm run $target"
$path = (Get-Item -Path ".\").FullName
docker run -it --memory="500m" --memory-swap="1g" --rm `
--mount type=bind,src="$path\src/MyProject/wwwroot/dist",dst=/work/wwwroot/dist `
--mount type=bind,src="$path\src/MyProject/fed/dist",dst=/work/fed/dist `
--mount type=bind,src="$path\src/MyProject/fed/.storybook",dst=/work/fed/.storybook `
--mount type=bind,src="$path\src/MyProject/fed/src",dst=/work/fed/src `
mytag npm run $target
那么,如果这在我的旧笔记本电脑上工作,为什么我突然得到这个错误?某种PowerShell插件(这就是我如何触发此)?
这是由Powershell .Net Core 7触发的。在WSL之上使用Docker Desktop
更新
我很确定这与Powershell .Net Core有关。该脚本在Windows PowerShell中工作正常。
这是某种背景吗
1条答案
按热度按时间axr492tv1#
此问题是由于PowerShell 7.3中的一个重大更改造成的:
某些本机命令需要包含引号字符的参数。PowerShell 7.3更改了命令行解析原生命令的方式。
恢复原始行为的最快解决方法是:
一般来说,用
Start-Process
cmdlet重写本机命令似乎是最好的方法。