Node.js node process.argv正在剥离插入符号(^)

Node.js node process.argv正在剥离插入符号(^),node.js,Node.js,我试图将插入符号字符作为参数传递到节点,但process.argv正在剥离插入符号。传递--bar=^caret无效。有什么方法可以防止process.argv剥离插入符号 //command: npm run foo -- --bar=^caret //foo.js: console.log(process.argv); //actual output: [ 'C:\\Program Files\\nodejs\\node.exe', 'C:\\cygwin64\\home\\m

我试图将插入符号字符作为参数传递到节点,但
process.argv
正在剥离插入符号。传递
--bar=^caret
无效。有什么方法可以防止
process.argv
剥离插入符号

//command:
npm run foo -- --bar=^caret

//foo.js:
console.log(process.argv);

//actual output:
[ 
  'C:\\Program Files\\nodejs\\node.exe',
  'C:\\cygwin64\\home\\me\\test\\scripts\\foo.js',
  '--bar=caret'
]

//expected output:
[ 
  'C:\\Program Files\\nodejs\\node.exe',
  'C:\\cygwin64\\home\\me\\test\\scripts\\foo.js',
  '--bar=^caret'
]

^
是Windows命令处理器(
cmd
)的转义字符。如果要在参数中使用文本
^
运行程序窗体
cmd
,则需要改为编写
^
,或者在本例中,使用引号将
--bar=^caret
括起来

这些措施应该有效:

npm run foo -- "--bar=^caret"
npm run foo -- --bar=^^caret
帮助CMD

需要引号的特殊字符包括: &()[]{}^=;!'+,`~
这在PowerShell或Bash中是不必要的,因为它们的转义字符分别是,
`
\

不是Node.js,而是正在剥离插入符号的字符。可能是贝壳。试试
“--bar=^caret”
啊,你说得对。剥落的是外壳。我以前在PowerShell中运行。现在我在Windows命令处理器中运行,并将参数用双引号括起来。 The special characters that require quotes are: <space> &()[]{}^=;!'+,`~