我正在尝试使用 kudu 部署将 React 应用程序部署到 Azure Linux Web 应用程序。我有一个非常标准的 deploy.sh 脚本,但有一个例外。我想yarn
通过 安装包管理器npm
。尝试npm install yarn -g
部署时失败。查看日志,这看起来像是权限问题。
npm WARN checkPermissions Missing write access to /opt/nodejs/6.11.0/lib/node_modules
有没有办法在 azure linux webapps 上安装全局 npm 模块?
您可以在此处查看日志:
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
`-- [email protected]
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
如果可能的话,你应该使用 sudo 来运行脚本。这将解决权限问题
答案2
您可以按照此处的说明使用 kudu-yarn: https://github.com/stefangordon/kudu-yarn
它要求您复制项目中的几个文件,这些文件将被压缩并发送到 Azure。在应用服务中,它将利用他们提供的Kudu.deployment
文件并运行。deploy.cmd
答案3
我在尝试安装时遇到了同样的问题serve
。最后,我不得不将其serve
作为依赖项添加到我的系统中package.json
,并在启动命令设置为的情况下在本地执行它node_modules/.bin/serve -s build
。这是我的部署阶段;
- 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 生成的几乎完全相同。