Après de nombreuses recherches, j'ai suivi une vidéo YouTube https://youtu.be/Ny5vJRfQito et obtenu la passerelle de paiement déployé sur Azure.

Cependant, lors des paiements, le problème ci-dessous a été rencontré indiquant que payment_intent.js n'a pas été trouvé

Erreur 404 payment_intent.js introuvable

Erreur dans la console

enter image description here

Ci-dessous la capture d'écran du fichier disponible dans le référentiel

Fichier disponible dans DevOps Repo

enter image description here

Navigation vers Azure App Service à l'aide de l'URL https://myapp.scm .azurewebsites.net/DebugConsole/?shell=powershell et a constaté que le fichier n'était pas dans la liste comme indiqué ci-dessous

Liste des fichiers dans Azure App Service

enter image description here

Beaucoup googlé, mais je n'ai pas pu trouver de solution à cela.

J'apprécierais que quelqu'un ici puisse m'aider avec le déploiement sur Azure et quelles sont les étapes supplémentaires à suivre pour résoudre le problème.

S'il vous plaît laissez-moi savoir si d'autres détails sont nécessaires

Merci d'avance

MISE À JOUR

Il s'agit d'une application Next.js et les fichiers de projet finaux sont stockés dans le dossier OUT car next.js n'a pas de dossier de construction comme indiqué ci-dessous. Les mêmes fichiers sont également affichés sous la racine www.

Le code fonctionne bien sur localhost, ci-dessous la structure complète des dossiers

Structure du dossier du projet

Ci-dessous se trouve la capture d'écran du pipeline de build

Construire un pipeline

Ci-dessous le dossier de sortie

Structure des dossiers et fichiers

2
Vivek 9 nov. 2020 à 23:02

1 réponse

Meilleure réponse

Je reproduis l'erreur 404 en utilisant votre code, et j'ai remarqué que vous utilisez le projet next.js, qui est un peu différent dans Azure entre local.

Vous avez besoin de deux fichiers : server.js et web.config, et modifiez package.json comme ci-dessous. Je teste avec ton code, et ça marche parfaitement de mon côté.

package.json modifier.

"scripts": {
    "dev": "node server.js",
    "build": "next build",
    "start": "node server.js"

server.js (créez ce fichier avec le code ci-dessous :)

const { createServer } = require('http')
const next = require('next')

const port = parseInt(process.env.PORT, 10) || 3000
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()

app.prepare().then(() => {
  createServer((req, res) => {
    const parsedUrl = new URL(req.url, 'http://w.w')
    const { pathname, query } = parsedUrl

    if (pathname === '/a') {
      app.render(req, res, '/a', query)
    } else if (pathname === '/b') {
      app.render(req, res, '/b', query)
    } else {
      handle(req, res, parsedUrl)
    }
  }).listen(port, (err) => {
    if (err) throw err
    console.log(`> Ready on http://localhost:${port}`)
  })
})

web.config (créez ce fichier avec le code ci-dessous :)

<?xml version="1.0" encoding="utf-8"?>
<!--
     This configuration file is required if iisnode is used to run node processes behind
     IIS or IIS Express.  For more information, visit:
     https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/web.config
-->

<configuration>
  <system.webServer>
    <!-- Visit http://blogs.msdn.com/b/windowsazure/archive/2013/11/14/introduction-to-websockets-on-windows-azure-web-sites.aspx for more information on WebSocket support -->
    <webSocket enabled="false" />
    <handlers>
      <!-- Indicates that the server.js file is a node.js site to be handled by the iisnode module -->
      <add name="iisnode" path="server.js" verb="*" modules="iisnode"/>
    </handlers>
    <rewrite>
      <rules>
        <!-- Do not interfere with requests for node-inspector debugging -->
        <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
          <match url="^server.js\/debug[\/]?" />
        </rule>

        <!-- First we consider whether the incoming URL matches a physical file in the /public folder -->
        <rule name="StaticContent">
          <action type="Rewrite" url="public{REQUEST_URI}"/>
        </rule>

        <!-- All other URLs are mapped to the node.js site entry point -->
        <rule name="DynamicContent">
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
          </conditions>
          <action type="Rewrite" url="server.js"/>
        </rule>
      </rules>
    </rewrite>

    <!-- 'bin' directory has no special meaning in node.js and apps can be placed in it -->
    <security>
      <requestFiltering>
        <hiddenSegments>
          <remove segment="bin"/>
        </hiddenSegments>
      </requestFiltering>
    </security>

    <!-- Make sure error responses are left untouched -->
    <httpErrors existingResponse="PassThrough" />

    <!--
      You can control how Node is hosted within IIS using the following options:
        * watchedFiles: semi-colon separated list of files that will be watched for changes to restart the server
        * node_env: will be propagated to node as NODE_ENV environment variable
        * debuggingEnabled - controls whether the built-in debugger is enabled
      See https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/web.config for a full list of options
    -->
    <!--<iisnode watchedFiles="web.config;*.js"/>-->
  </system.webServer>
</configuration> 

Reportez-vous à : impossible de déployer next js sur Azure


Voici les étapes que j'ai faites :

Pré : ajoutez web.config et server.js et modifiez package.json.

1. Créez un pipeline de compilation.

enter image description here enter image description here

2. Créer un pipeline de versions.

enter image description here enter image description here

3. Exécutez build-->déclenchez la publication.

Téléchargez et vérifiez les artefacts :

enter image description here

  1. Vérifiez l'application web déployée dans Azure. entrez la description de l'image ici entrez la description de l'image ici
4
Doris Lv 18 nov. 2020 à 07:35