Azure Linux WebApp-deploy.sh无法全局安装yarn

Azure Linux WebApp-deploy.sh无法全局安装yarn

我正在尝试使用 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 生成的几乎完全相同。

相关内容