Я пытаюсь развернуть приложение 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.
Вы должны запускать ваш скрипт с помощью sudo, если возможно. Это решит проблему с разрешениями
Вы можете следовать инструкциям здесь, чтобы использовать kudu -пряжа: https://github.com/stefangordon/kudu-yarn
Для этого необходимо скопировать пару файлов в свой проект, которые будут заархивированы и отправлены в Azure. Находясь в службе приложений, он будет использовать файл Kudu .deployment
и запустить предоставленный ими deploy.cmd
.
У меня был та же проблема при попытке установить 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.