Azure Linux WebApp - deploy.sh не может установить yarn глобально

Я пытаюсь развернуть приложение React в веб-приложении Linux для Azure с помощью развертывания kudu. У меня довольно стандартный сценарий deploy.sh за одним исключением. Я хочу установить менеджер пакетов yarn через npm . При попытке npm install yarn -g развертывание завершается ошибкой. Глядя на журналы, это похоже на проблему с разрешениями.

npm WARN checkPermissions Отсутствует доступ на запись к /opt/nodejs/6.11.0/lib/node_modules

Есть ли способ установить глобальные модули npm в веб-приложениях azure linux?

Вы можете увидеть журнал здесь:

Command: bash deploy.sh
Installing Yarn
npm WARN checkPermissions Missing write access to /opt/nodejs/6.11.0/lib/node_modules
/opt/nodejs/6.11.0/lib
npm ERR! Linux 4.13.0-1011-azure
`-- yarn@1.6.0 
npm ERR! argv "/opt/nodejs/6.11.0/bin/node" "/usr/bin/node_modules/npm/bin/npm-cli.js" "install" "yarn" "-g"

npm ERR! node v6.11.0
An error has occurred during web site deployment.
npm ERR! npm  v3.10.10
installing yarn dependency failed
npm ERR! path /opt/nodejs/6.11.0/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access '/opt/nodejs/6.11.0/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!  { Error: EACCES: permission denied, access '/opt/nodejs/6.11.0/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/opt/nodejs/6.11.0/lib/node_modules' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.
1
задан 26 April 2018 в 23:06
3 ответа

Вы должны запускать ваш скрипт с помощью sudo, если возможно. Это решит проблему с разрешениями

0
ответ дан 4 December 2019 в 04:02

Вы можете следовать инструкциям здесь, чтобы использовать kudu -пряжа: https://github.com/stefangordon/kudu-yarn

Для этого необходимо скопировать пару файлов в свой проект, которые будут заархивированы и отправлены в Azure. Находясь в службе приложений, он будет использовать файл Kudu .deployment и запустить предоставленный ими deploy.cmd .

0
ответ дан 4 December 2019 в 04:02

У меня был та же проблема при попытке установить serve. В конце концов мне пришлось добавить serve в качестве зависимости в мой package.json и выполнить его локально с командой запуска, установленной на node_modules/.bin/serve -s сборка. Вот мой этап развертывания;

- task: AzureRmWebAppDeployment@4
  displayName: 'Azure App Service Deploy'
  inputs:
    azureSubscription: $(azureSubscription)
    appType: webAppLinux
    WebAppName: $(webAppName)
    packageForLinux: '$(Pipeline.Workspace)/drop/$(Build.BuildId).zip'
    RuntimeStack: 'NODE|10.10'
    StartupCommand: 'node_modules/.bin/serve -s build'
    ScriptType: 'Inline Script'
    InlineScript: |
    npm install

В остальном это почти то же самое, что и сгенерированное Azure DevOps.

0
ответ дан 6 January 2021 в 14:43

Теги

Похожие вопросы