Как развернуть Nuxt с IIS - PullRequest
       61

Как развернуть Nuxt с IIS

0 голосов
/ 26 января 2020

Я хочу развернуть Nuxt в IIS. Я использую узел IIS, но не могу заставить его работать ... Папка

Я могу работать с npm run начать на моем сервере, но у меня есть другие проекты, такие как admin y api (. net), и он использует порт 80, поэтому, когда я использую порт 80, он занят, в то время как в IIS он работает с этой структурой Папка IIS

это мой код в web.config

<?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="nuxt.config.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="^nuxt.config.js\/debug[\/]?" />
        </rule>

        <!-- <rule name="Redirect to https" stopProcessing="true">
          <match url="(.*)"/>
          <conditions>
            <add input="{HTTPS}" pattern="Off"/>
            <add input="{REQUEST_METHOD}" pattern="^get$|^head$" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/>
        </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="nuxt.config.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>

игнорировать nuxt.config. js до того, как у меня был сервер. js с express, но он не работал , потому что я использую ES6 и при попытке запустить nuxt.config получил ошибку о синтаксисе

Ответы [ 2 ]

1 голос
/ 16 марта 2020

Дело в том, что вам абсолютно необходимо использовать файл js для запуска сервера node.js. Синтаксическая ошибка, вероятно, была при экспорте в конфигурации. js, и ее можно легко исправить, изменив export default { ... на module.exports = { ...

Ваш сервер. Файл js должен выглядеть следующим образом:

const express = require('express');
const consola = require('consola');
const { Nuxt, Builder } = require('nuxt');
const app = express();

const config = require('./nuxt.config.js');
config.dev = process.env.NODE_ENV !== 'production';

async function start() {
  const nuxt = new Nuxt(config);
  const { host, port } = nuxt.options.server;

  if (config.dev) {
    const builder = new Builder(nuxt);
    await builder.build();
  } else {
    await nuxt.ready();
  }

  app.use(nuxt.render);

  app.listen(port, host);
  consola.ready({
    message: `Server listening on http://${host}:${port}`,
    badge: true
  });
}

start();

Файл находится на том же уровне, что и nuxt.config.js (не стесняйтесь перемещать его в server/index.js, как nuxt-create-app, когда вы выбираете express в качестве пользовательской инфраструктуры сервера и изменяете импорт конфигурации на const config = require('../nuxt.config.js');).

И не забудьте изменить путь вашего правила перезаписи и модуля iisnode к серверу. js файл в web.config.

Вы также необходимо добавить <iisnode node_env="development" /> к вашему web.config, если вы хотите запустить его в производственном режиме.

Также рассмотрите возможность добавления отдельного файла конфигурации для каждой среды, тогда в package.json вы можете переключать их следующим образом:

  "scripts": {
    "dev": "nuxt",
    "build-local": "nuxt build",
    "build-dev": "nuxt build --config-file nuxt.config.dev.js",
    "build": "nuxt build --config-file nuxt.config.prod.js",
    "start": "nuxt start",
    "generate": "nuxt generate"
  }

А затем построить, например, npm run build-dev или yarn build-dev.

0 голосов
/ 27 января 2020

1) убедитесь, что вы установили узел.

https://nodejs.org/en/download/

2) создайте приложение nutx с помощью следующей команды:

npm init nuxt-app testnu

enter image description here

3) войдите в папку приложения и выполните команду ниже для создания сайта:

npm run generate

Эта команда создаст папку dist в папке приложения.

4) создайте сайт в IIS, укажите путь к папке dist в качестве пути к сайту и назначьте информацию о привязке сайта.

enter image description here

5) не забудьте назначить разрешения iis_iusrs и iusr папке сайта (в моем случае папка сайта testnu)

enter image description here

6) обновите sh и перезапустите сайт после внесения изменений и просмотрите сайт.

enter image description here

...