如何修复“错误:找不到具有部署到Azure的应用的模块“/home/site/wwwroot/index.js”?

cmssoen2  于 2023-02-25  发布在  其他
关注(0)|答案(2)|浏览(170)

我第一次尝试将node.js应用作为Azure应用服务部署到Azure,但在尝试运行该应用时遇到了这个顽固的错误,我还不知道如何进行故障排除。也许在座的某人能给我一些提示,告诉我哪里出错了。
以下给予一些背景:

  • 我正在处理一个包含目录子集的项目,每个目录都是一个应用程序(服务器、客户端......)
  • 主目录是git目录
  • 我正在开发的nodejs应用程序是用typescript构建的,并利用了Apollo Server(它本身利用了express)
  • 我正在通过GitHub部署到Azure

考虑到这一点,我的项目文件夹结构如下所示:

| main_folder
  | .github
    | workflows
        workflow.yml
  | server
    | src
    | dist
    .env
    index.ts
    package-lock.json
    package.json
    tsconfig.json    
  | other_apps
  .gitignore
  README.md

index.ts中,我有运行应用程序的相关代码,其余相关文件如下所示:tsconfig.json

{
    "compilerOptions": {
        "target": "ES2022",
        "module": "CommonJS",
        "lib": [
            "ES2022", "DOM"
        ],
        "strict": true,
        "rootDir": ".",
        "outDir": "./dist",
        "sourceMap": true,
        "esModuleInterop": true
    }
}

package.json

{
  "name": "server",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "ts-node-dev --transpile-only --no-notify --exit-child index.ts",
    "build": "npx tsc",
    "start": "node ."
  },
  // ...
}

workflow.yml

on:
  push:
    branches: ["master"]
  workflow_dispatch:

env:
  AZURE_WEBAPP_NAME: my-app-name 
  AZURE_WEBAPP_PACKAGE_PATH: "." # set this to the path to your web app project, defaults to the repository root
  NODE_VERSION: "16.x" # set this to the node version to use

permissions:
  contents: read

jobs:
  build:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./server
    steps:
      - uses: actions/checkout@v3

      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: "npm"
          cache-dependency-path: ./server/package-lock.json

      - name: npm install, build, and test
        run: |
          npm install
          npm run build --if-present
          npm run test --if-present

      - name: Zip artifact for deployment
        run: zip -r release.zip ./* .env

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v3
        with:
          name: node-app
          path: ./server/release.zip

  deploy:
    permissions:
      contents: none
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: "Development"
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v3
        with:
          name: node-app

      - name: unzip artifact for deployment
        run: unzip release.zip

      - name: "Deploy to Azure WebApp"
        id: my_app_id
        uses: azure/webapps-deploy@v2
        with:
          app-name: ${{ env.AZURE_WEBAPP_NAME }}
          publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
          package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}

此应用在本地运行良好(运行npm run dev)。当我在GitHub中推送到master时,构建和部署作业都正常工作。但是,当我转到Azure门户并检查应用时,我看到以下两个内容:
当我打开应用程序的URL时,页面显示:

当我在Azure中检查应用的诊断时,它告诉我:

错误是Error: Cannot find module '/home/site/wwwroot/index.js'。当我在GitHub中设置自动构建和部署的配置时,我遇到了一些项目结构的问题,因为我的git仓库实际上并不包含任何应用程序(package.json),而是在嵌套的文件夹中。然而,我不认为这个错误源于该设置,而是源于其他地方。
有人能提示我这里做错了什么吗?我重复一下,这是我第一次尝试将nodejs应用发布到Azure,尽管我认为我正确地遵循了文档,但也有可能我在一个明显的步骤中搞砸了。如果是这样的话,我希望有人指出这一点!
我很乐意在描述中添加任何可能与此问题相关的更多信息。

nwo49xxi

nwo49xxi1#

我已经尝试通过创建一个示例node. jswebapp并将代码推送到github来重现这一点。
已使用github操作CI/CD管道创建Azure应用服务并成功部署。
确保您具有以下项目结构:

使用Azure应用服务的发布配置文件在GitHub中创建了一个密钥,如下图所示:

配置完上述步骤后,将代码从本地存储库推送到git存储库,然后将触发github管道,代码将部署到Azure应用服务,如下图所示:

您可以转到Azure门户并检查部署是否成功,如下所示:

***单击Azure应用服务URL后的输出屏幕:***x1c4d 1x

ar7v8xwq

ar7v8xwq2#

我遇到了同样的问题(错误:无法找到模块“/home/site/
当我检查源代码时,我找不到index.js,但找到了server.js。
我的解决方案:
1.将server.js更改为index.js,
1.然后检查package.json "main":"索引. js",

相关问题