首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用高速公路vhost功能运行多个nuxt实例

如何使用高速公路vhost功能运行多个nuxt实例
EN

Stack Overflow用户
提问于 2019-12-07 05:14:51
回答 1查看 1.7K关注 0票数 2

我试图运行两个或更多的nuxt应用程序使用的高速公路和它的vhost功能。我的目标是在一个端口中运行分配给不同域的多个nuxt应用程序。

这是我试过的。

  1. I设置了2个nuxt示例应用程序
  2. 我在将vhost模块添加到
  3. 中设置了
  4. 的内容

var vhost =需要量(“express”);var vhost =需要量(“vhost”);var app_one =需要量(“./ app _one/server/index.js”);var app_two =需要量(“./app_2/server/index.js”);.listen(3000);

  • Then .use(vhost("appone.com",app_one.start_app_one)) .use(vhost("apptwo.com",app_two.start_app_two))

App One

代码语言:javascript
复制
const express = require("express");
const consola = require("consola");
const {
  Nuxt,
  Builder
} = require("nuxt");
const app = express();

// Import and Set Nuxt.js options
const config = require("../nuxt.config.js");
config.dev = process.env.NODE_ENV !== "production";

async function start() {
  // Init Nuxt.js
  const nuxt = new Nuxt(config);

  const {
    host,
    port
  } = nuxt.options.server;

  // Build only in dev mode
  await nuxt.ready();

  // Give nuxt middleware to express
  app.use(nuxt.render);

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

exports.start_app_one = function () {
  start();
};

应用程序二

代码语言:javascript
复制
const express = require("express");
const consola = require("consola");
const {
  Nuxt,
  Builder
} = require("nuxt");
const app = express();

// Import and Set Nuxt.js options
const config = require("../nuxt.config.js");
config.dev = process.env.NODE_ENV !== "production";

async function start() {
  // Init Nuxt.js
  const nuxt = new Nuxt(config);

  const {
    host,
    port
  } = nuxt.options.server;

  await nuxt.ready();

  // Give nuxt middleware to express
  app.use(nuxt.render);

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

exports.start_app_two = function () {
  start();
};

然后我运行node server.js。当我尝试访问appone.com:3000时,它只显示nuxt加载网页,并在此停止。控制台内没有错误或没有消息。我被困在这一点上,有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-13 06:48:08

所以我让它成功了。我就是这么做的。

  1. 设置了2个nuxt示例应用程序
  2. i在package.json

中添加了vhost模块来设置高速公路

以下是用于高速公路的server.js内容

代码语言:javascript
复制
const express = require('express')
var vhost = require('vhost')
const app = express()
const port = 3000

const appone = require('./app_one/server/index.js')
const apptwo = require('./app_two/server/index.js')

// app.get('/', (req, res) => res.send('Hello dear world, this is the host app to show vhost capabilities!'))
app
    .use(vhost('appone.com', appone))
    .use(vhost('apptwo.com', apptwo))
    .listen(3000);

// app.listen(port, () => console.log(`Example app listening on port ${port}!`))

  1. 使用下面的命令创建了带有高速公路服务器的2个nuxt

npx create-nuxt-app <project-name>

  • Edited --这两个应用程序中的服务器/index.js文件--删除了app.listen部分,因为我们已经在所需的端口和主机上使用server.js文件监听该部分。

这是两个应用程序的index.js文件。

代码语言:javascript
复制
const express = require("express");
const consola = require("consola");
const { Nuxt, Builder } = require("nuxt");
const app = express();

// Import and Set Nuxt.js options
const config = require("../nuxt.config.js");
config.dev = process.env.NODE_ENV !== "production";

async function start() {
  // Init Nuxt.js
  const nuxt = new Nuxt(config);

  const { host, port } = nuxt.options.server;

  // Build only in dev mode
  if (config.dev) {
    const builder = new Builder(nuxt);
    await builder.build();
  } else {
    await nuxt.ready();
  }
  // Give nuxt middleware to express
  app.use(nuxt.render);

  // Listen the server
  // port = 3005
  // app.listen(port, host)
  // consola.ready({
  //   message: \`Server listening on http://${host}:${port}\`,
  //   badge: true
  // })
}
start();
module.exports = app;

现在我转到每个特定于应用程序的文件夹,运行下面的命令来构建文件。

这两个应用程序都可以使用npm run build

  • Once。我添加了修改后的应用程序的package.json文件,并设置了高速公路vhost。

我包括了我的子应用程序所需的模块,因为由于某种原因,没有这些模块就无法工作。

代码语言:javascript
复制
{
  "name": "webclient_test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "axios": "^0.19.0",
    "express": "^4.17.1",
    "node-fetch": "^2.6.0",
    "nuxt": "^2.10.2",
    "vhost": "^3.0.2",
    "vue-meta": "^2.3.1"
  }
}

然后,

  1. 将两个子应用程序中的nuxt.config.js文件更改为包含构建目录。我需要将构建目录更改为从高速公路vhost安装应用程序中的相对路径。因此,我在两个子应用程序的配置文件中添加了这个配置选项作为最后一项。

第一个应用程序

代码语言:javascript
复制
buildDir: "app_one/.nuxt"

第二个应用程序。

代码语言:javascript
复制
buildDir: "app_two/.nuxt"

  1. 之后,我运行了node server.js,这两个应用程序都可以从各自的域(即appone.com:3000apptwo.com:3000 )访问,没有任何问题

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59223227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档