nextjs应用程序的入口点在哪里?

问题描述 投票:0回答:5

将 nextjs 应用程序部署到

c-panel
托管时,它会询问应用程序的入口点,默认为
app.js
。在正常的 React 应用程序中,它完全受控,但是当使用
nextjs
时,不清楚哪个 js 文件负责启动应用程序。

enter image description here

关于选择正确的 js 文件作为应用程序入口点有什么想法吗?

编辑:

我的托管提供商为我提供了以下代码来设置快速应用程序(它使用 next 的请求处理程序)来处理请求:

const express = require('express');
const next = require('next');

const dev = process.env.NODE_ENV !== 'production';
const nextApp = next({ dev });
const handle = nextApp.getRequestHandler();

const port = 3454;

nextApp.prepare().then(() => {
  const app = express();

  app.get('*', (req, res) => {
    return handle(req, res);
  });

  app.listen(port, err => {
    if (err) throw err;
    console.log(`> Ready on localhost:${port}`);
  });
});

它可以工作,但速度很慢,因为它根据服务器请求按需编译源文件。

reactjs npm cpanel next.js
5个回答
6
投票

您只需要导出您的 nextjs 应用程序,它就可以与

页数 -- 是否有页数

  • index.js
  • 示例.js

app.js -- 是否有app.js文件

只需添加以下脚本

 "scripts": {
    "build": "next build",
    "export": "next export",
    "serve": "serve out"
  },

您可以先构建项目,然后导出它。然后您可以为其提供服务以检查它将如何部署。

如果是 cPanel,只需将可能名为

out
的 nextjs 构建文件夹提取到您的文件夹(例如 xyz.com)。

构建中会有一个index.html,它是您的主文件。


3
投票

在React中,我们在公共文件夹中有INDEX.HTML文件,但在NEXTJS中我们没有index.html文件。因为Next.js内置了预渲染。因此,在 React 中,index.html 文件通常用作应用程序的入口点,但在 Next.js 中,入口点定义在 PAGES 目录中。Next.js 默认使用 SSR,这意味着 HTML 在服务器上动态生成并发送到客户端作为一个完整的页面。这可以实现更快的初始加载时间和更好的搜索引擎优化 (SEO)。因此,在 Nextjs 应用程序中,入口点可以是 PAGES 目录中的任何 ts 或 js 文件。


1
投票

我很惊讶地发现cpanel有启动nodejs应用程序的功能。

关于 app.js 你需要了解的内容:

App.js 包含一个 Web 服务器应用程序(从上面的代码来看,您的托管提供商建议您使用 ExpressJS - 最常用的 JS Web 服务器应用程序)向浏览器提供 Web 文件(类似于 Apache)。

“它可以工作,但速度很慢,因为它按需编译源文件 服务器请求。”

你有package.json文件吗?

您知道 cpanel 运行了什么命令来启动您的应用程序吗?

请检查您的 NextJS 应用程序是否在开发或生产模式下运行。


0
投票

对我来说最好的解决方案是使用一些进程管理器来引导应用程序。所以我使用PM2来启动应用程序并保持其运行。我在

c-panel
终端中发出以下命令,现在一切正常:

NODE_ENV=production pm2 start server.js

给定

server.js
有以下代码:

const express = require('express');
const next = require('next');

const dev = process.env.NODE_ENV !== 'production';
const nextApp = next({ dev });
const handle = nextApp.getRequestHandler();

const port = 3454;

nextApp.prepare().then(() => {
  const app = express();

  app.get('*', (req, res) => {
    return handle(req, res);
  });

  app.listen(port, err => {
    if (err) throw err;
    console.log(`> Ready on localhost:${port}`);
  });
});

0
投票

使用应用程序路由器执行此操作的正确方法是通过仪器。

https://nextjs.org/docs/app/building-your-application/optimizing/instrumentation

© www.soinside.com 2019 - 2024. All rights reserved.