在没有服务器的情况下从本地文件系统运行NextJs应用程序

envsm3lx  于 2023-03-02  发布在  其他
关注(0)|答案(1)|浏览(187)

我有一个使用NextJs13构建的静态Web应用程序,它没有API路径,也没有数据获取。是否可以在没有服务器的情况下从本地文件系统运行网站?

j1dl9f46

j1dl9f461#

我可以单独加载静态页面,但是页面之间的路由不起作用。
首先,我需要获取构建过程中生成的静态文件。我更新了我的package.json,以便在构建后执行next export,如下所示:

"scripts": {
  "build": "next build && next export"
}

当我运行构建(在我的例子中是yarn build)时,我在项目根文件夹中得到了一个名为out的文件夹。
我有一个out/index.html文件,我可以在我的浏览器中打开。但是,我的大部分内容没有正确加载。当我重新加载这个页面时,我可以看到许多失败的调用来获取各种css和javascript文件。失败的url指向像file:///_next/...这样的位置。这些文件确实存在于我的out文件夹中,这只是索引页在错误的路径上寻找它们。
我可以通过将assetPrefix: "./"添加到我的next.config.js文件中来解决这个问题。下面是该文件的完整版本:

/** @type {import('next').NextConfig} */
const nextConfig = {
  reactStrictMode: true,
  assetPrefix: "./",
};

module.exports = nextConfig;

我再次运行了构建,这次当我打开/index. html时,我的网站页面工作正常。但是我不能在页面之间路由。如果你需要一些特定的链接,你可以用html链接替换React路由,但是当然你现在不再有单页应用程序了。
在我的例子中,我只需要与某人共享一个浏览器中的工具,所以这个过程仍然是有用的。

相关问题