mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
repl: avoid interpreting 'npm' as a command when errors are recoverable
This change ensures that 'npm' within JavaScript code is not mistakenly interpreted as an npm command when the error is recoverable. This allows 'npm' to be treated as expected in such scenarios. Fixes: https://github.com/nodejs/node/issues/54830 PR-URL: https://github.com/nodejs/node/pull/54848 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Kohei Ueno <kohei.ueno119@gmail.com>
This commit is contained in:
parent
4c0ad1fef1
commit
86bdca9772
@ -931,7 +931,9 @@ function REPLServer(prompt,
|
||||
ReflectApply(_memory, self, [cmd]);
|
||||
|
||||
if (e && !self[kBufferedCommandSymbol] &&
|
||||
StringPrototypeStartsWith(StringPrototypeTrim(cmd), 'npm ')) {
|
||||
StringPrototypeStartsWith(StringPrototypeTrim(cmd), 'npm ') &&
|
||||
!(e instanceof Recoverable)
|
||||
) {
|
||||
self.output.write('npm should be run outside of the ' +
|
||||
'Node.js REPL, in your normal shell.\n' +
|
||||
'(Press Ctrl+D to exit.)\n');
|
||||
|
@ -129,6 +129,17 @@ const strictModeTests = [
|
||||
},
|
||||
];
|
||||
|
||||
const possibleTokensAfterIdentifierWithLineBreak = [
|
||||
'(\n)',
|
||||
'[\n0]',
|
||||
'+\n1', '- \n1', '* \n1', '/ \n1', '% \n1', '** \n1',
|
||||
'== \n1', '=== \n1', '!= \n1', '!== \n1', '< \n1', '> \n1', '<= \n1', '>= \n1',
|
||||
'&& \n1', '|| \n1', '?? \n1',
|
||||
'= \n1', '+= \n1', '-= \n1', '*= \n1', '/= \n1', '%= \n1',
|
||||
': \n',
|
||||
'? \n1: 1',
|
||||
];
|
||||
|
||||
const errorTests = [
|
||||
// Uncaught error throws and prints out
|
||||
{
|
||||
@ -386,6 +397,16 @@ const errorTests = [
|
||||
'(Press Ctrl+D to exit.)',
|
||||
]
|
||||
},
|
||||
{
|
||||
send: 'let npm = () => {};',
|
||||
expect: 'undefined'
|
||||
},
|
||||
...possibleTokensAfterIdentifierWithLineBreak.map((token) => (
|
||||
{
|
||||
send: `npm ${token}; undefined`,
|
||||
expect: '... undefined'
|
||||
}
|
||||
)),
|
||||
{
|
||||
send: '(function() {\n\nreturn 1;\n})()',
|
||||
expect: '... ... ... 1'
|
||||
|
Loading…
Reference in New Issue
Block a user