【问题标题】:How do I run my nuxt app on a different URL and port using pm2?如何使用 pm2 在不同的 URL 和端口上运行我的 nuxt 应用程序?
【发布时间】:2021-08-19 18:36:32
【问题描述】:

我想使用 pm2 和生态系统.config.js 在不同的 URL 和端口上运行我的 Nuxt 应用程序。

我希望它像下面的 package.json 脚本一样运行:

"devhost": "nuxt --hostname 'my.url.domain' --port 8080"

这个 scipt 允许我在我想要的端口和 url 上运行我的 nuxt 应用程序。但是,如果我按照 nuxt 文档 here 给出的配置,应用程序会在 localhost:3000 上运行,因此我无法在其他机器上运行应用程序,从而导致问题。

不幸的是,我已经搜索了网络,似乎无法找到针对我的具体情况的解决方案。

我尝试将script 选项更改为script: "npm" 并将args 设置为:args: "devhost",但即使这样也没有用。

运行pm2 logs 表示can't run command "nuxt-dev-host",因此它不起作用。

我也尝试将script 更改为./node_modules/nuxt/bin/nuxt.js 与相同的args,但它仍然不起作用。

请帮忙。

【问题讨论】:

    标签: nuxt.js pm2


    【解决方案1】:

    官方主页展示了如何使用 express 构建。

    根据官网,把server.js和代码做成这样。

    const { Nuxt, Builder } = require("nuxt");
    
    const app = require("express")();
    const isProd = process.env.NODE_ENV === "production";
    const port = process.env.PORT || 3080;
    
    // We instantiate Nuxt.js with the options
    const config = require("./nuxt.config.js");
    config.dev = !isProd;
    const nuxt = new Nuxt(config);
    
    // Render every route with Nuxt.js
    app.use(nuxt.render);
    
    // Build only in dev mode with hot-reloading
    if (config.dev) {
      new Builder(nuxt).build().then(listen);
    } else {
      listen();
    }
    
    function listen() {
      // Listen the server
      app.listen(port);
      console.log("Server listening on `localhost:" + port + "`.");
    }

    然后去package.json写脚本。

    "start": "cross-env PORT=80 NODE_ENV=production pm2 start server.js"

    这里需要注意的是NODE_ENV是部署模式,所以作为生产使用,而提问者是开发模式,所以有区别。

    必须安装跨环境模块。

    【讨论】:

    • 我不想使用 express 服务我的 nuxt 应用程序。我希望它以静态方式提供服务,即 jumstack 方式。无论如何,即使这有效,我也不相信这是正确的方法。必须有一种更优雅的方式来配置 pm2,而无需更改我的网站代码。例如,就像我对上面的 package.json 脚本所做的那样。 另一个重要的部分是我很想使用生态系统.config.js 实现这一目标
    猜你喜欢
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    相关资源
    最近更新 更多