Как запустить несколько команд PowerShell с помощью сценариев пакета. json - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть следующее определение сценария "debug- windows" в моем package.json:

{
    "scripts": {
        "debug-windows": "$env:NODE_ENV=\"dev\"; node src/dequeue.js"
    }
}

, которое я запускаю, используя npm run debug-windows, и получаю ошибку:

> servicebus-timeout@1.0.0 debug-windows C:\myapp
> $env:NODE_ENV="dev"; node src/dequeue.js

The filename, directory name, or volume label syntax is incorrect.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! servicebus-timeout@1.0.0 debug-windows-test: `$env:NODE_ENV="dev"; node src/dequeue.js`  
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the servicebus-timeout@1.0.0 debug-windows-test script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\<USERNAME>\AppData\Roaming\npm-cache\_logs\2020-04-27T16_29_32_585Z-debug.log

Если я запускаю ту же команду непосредственно в PowerShell, она завершается успешно:

PS C:\myapp> $env:NODE_ENV="dev"; node src/dequeue.js
Waiting for messages: Mon Apr 27 2020 13:24:06 GMT-0300 (Brasilia Standard Time)

1 Ответ

0 голосов
/ 27 апреля 2020

Я потратил некоторое время на проверку документов npm и обнаружил проблему. npm-run-script запускает CMD на Windows, а не на PowerShell.

Решение было разделить команды, используя & и соответствующие set для определения переменных сеанса:

"debug-windows": "set NODE_ENV=dev & node src/dequeue.js"

Мне не нужно npm использовать PowerShell, просто я думал, что это так.

Если кто-то хочет запустить PowerShell по другим причинам, проверьте этот поток , который имеет множество опций.

Документация по npm -run-script :

Фактическая оболочка, в которой выполняется ваш скрипт, зависит от платформы. По умолчанию в Unix -подобных системах это команда / bin / sh, в Windows это cmd.exe. Фактическая оболочка, на которую ссылается / bin / sh, также зависит от системы. Начиная с npm@5.1.0 вы можете настроить оболочку с помощью конфигурации сценария оболочки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...