【问题标题】:Azure Windows WebApp error - ESLint must be installed in order to run during builds: npm install --save-dev eslintAzure Windows WebApp 错误 - 必须安装 ESLint 才能在构建期间运行:npm install --save-dev eslint
【发布时间】:2022-09-26 14:07:20
【问题描述】:

我目前正在尝试在 Azure 中部署一个 Windows Web 应用程序。我正在使用 Nodejs,特别是它是一个带有 typescript 的 next.js react 应用程序。我在部署到天蓝色时遇到错误。

我正在使用 github 操作管道来构建和部署应用程序,当在那里运行时,npm install 和 npm build 可以正常工作。问题是当我将SCM_DO_BUILD_DURING_DEPLOYMENT 应用程序设置设置为true 时,我在部署到 Azure 步骤中收到一个 lint 错误,因为它正在 Web 应用程序上重建应用程序。错误是:

error - ESLint must be installed in order to run during builds: npm install --save-dev eslint

我将SCM_DO_BUILD_DURING_DEPLOYMENT 设置为true,因为我之前读过该节点与Azure webapps 链接节点包存在问题,因此您需要在服务器上运行构建。

问题是,当我在部署期间运行构建时,我读到命令 npm install --production 正在运行。当它运行时,它会正确安装我的包,但是当它执行postinstall 构建步骤时,它会因上述 eslint 错误而失败。

当我将SCM_DO_BUILD_DURING_DEPLOYMENT 设置为false 时,我的管道中的部署成功,但应用程序不起作用。

在 Windows 应用程序中,我看不到错误日志,但以前当我将其部署为 Linux 应用程序时,由于 node_modules 链接问题,它显示缺少包,所以我认为这是同样的问题视窗。 (要查看应用程序日志,我去了Diagnose and Solve Problems -> Application Logs,在 Windows 上我没有得到相同的选项,我单击的所有内容都只显示图表,所以我不确定如何验证它是同一个问题,但它似乎是。

TLDR

如何修复 eslint 错误并成功部署我的 next.js 应用程序?这是我的 package.json:

包.json

\"scripts\": {
    \"dev\": \"node server.js\",
    \"build\": \"next build\",
    \"start\": \"node server.js\",
    \"lint\": \"next lint\",
    \"postinstall\": \"next build\"
  },

我是否只是在 azure web 应用程序上以错误的方式部署 next.js 应用程序?任何指导表示赞赏。我花了几天时间试图让这个工作在这一点上。我应该创建自定义部署脚本吗?我无法找到使用节点执行此操作的文档,但我在 webapp 运行的错误输出中看到

azure site deploymentscript -y --no-dot-deployment -r \"C:\\local\\Temp\\zipdeploy\\extracted\" -o \"C:\\home\\site\\deployments\\tools\" --node --sitePath \"C:\\local\\Temp\\zipdeploy\\extracted\"\'. 那么有没有办法改变它?

  • 尝试在部署时在 yaml 中显式安装 eslint,或者您可以忽略 nextjs 中的 eslint
  • 当您在 YAML 中明确表示时,您指的是什么?我在 Windows Web 应用程序上安装,所以我有一个自定义构建脚本、server.js、web.config 和 package.json 文件
  • 尝试忽略下一个 js 中的 eslint 参考这个nextjs.org/docs/api-reference/next.config.js/ignoring-eslint

标签: azure deployment next.js azure-web-app-service eslint


【解决方案1】:
  • 有一个解决此错误的方法,即完全忽略eslint。

  • 这可以通过在 eslinttag 下添加 ignoreDuringBuilds 选项来配置next.config.js 来实现。 next.config.js 应该如下所示:

/** @type  {import('next').NextConfig} */
const  nextConfig = {
                        reactStrictMode:  true,
                        swcMinify:  true,
                    
                        eslint:{
                                    ignoreDuringBuilds :  true,
                                },
                    
                    }
module.exports = nextConfig

在这里,我使用上面的 next.config.js 文件部署了 Boilerplate nextjs 代码。

【讨论】:

    猜你喜欢
    • 2020-09-25
    • 1970-01-01
    • 2018-04-15
    • 2021-03-22
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 2016-01-08
    相关资源
    最近更新 更多