我正在开发我的第一个 NextJS 应用程序。当我运行“npm run dev”或“npm run start”时,它会将我的应用程序部署到
http://host:port/
Run Code Online (Sandbox Code Playgroud)
当我导航到一个页面时,网址变为
http://host:port/page1
Run Code Online (Sandbox Code Playgroud)
我需要有自己的特定网址,例如
http://host:port/my-test-application/path-for-my-app/
http://host:port/my-test-application/path-for-my-app/page1
Run Code Online (Sandbox Code Playgroud)
此外,我的应用程序有很多元素可以链接到应用程序的其他区域,我需要这些元素也可以使用 basePath 转到 URL 而不仅仅是转到根路径。
我还将将此应用程序部署到具有不同 basePath 的不同服务器,因此无法在我的应用程序中进行硬编码。
我怎样才能做到这一点?
对于其他应用程序,例如 react/vue/angular/native JS,我只需构建我的应用程序并将构建代码放在我的服务器上的“my-test-application/path-for-my-app”文件夹中。
我用我的 NextJS 应用程序尝试过这个,但我收到一个错误,说找不到“.next”文件夹。
我用谷歌搜索,可以找到一些使用“assetPrefix”或使用“Zones”的参考。但是,我真的不明白我应该做什么。
如何将我的应用程序部署到特定 URL
解决方案 1:重组“页面” - 无法部署到具有不同 basePaths 的不同服务器
我可以在“pages”目录中创建文件夹结构并更改我的所有元素以使用此文件夹结构。
|- pages
|- my-test-application
|- path-for-my-app
|- index.js
|- page1.js
<Link href="/my-test-application/path-for-my-app/page1" >
Run Code Online (Sandbox Code Playgroud)
我不喜欢这个解决方案,因为 basePath 被硬编码到我的应用程序中,与部署设置相关。
如果我想将我的应用程序部署在具有不同 basePaths(即下面)的 2 个服务器上,我将必须有 2 个版本的代码。
http://host:port/my-test-application_1/path-for-my-app/page1
http://host:port/my-test-application_2/diff-path-for-my-app/page1
Run Code Online (Sandbox Code Playgroud)
更新:我在 3 月 5 日更新了这个问题,包括我对 s 工作的需求和我不喜欢的一个解决方案。