将 nuxt.js 应用程序配置为在 Web 服务器上的子目录中工作

Posted

技术标签:

【中文标题】将 nuxt.js 应用程序配置为在 Web 服务器上的子目录中工作【英文标题】:Configure nuxt.js application to work in a subdirectory on a webserver 【发布时间】:2018-11-29 08:03:54 【问题描述】:

我想将静态 nuxt.js 应用程序(使用 nuxt generate 构建)部署到网络服务器的子目录。 nuxt默认将生成的文件放在dist目录下:

如果我在dist 文件夹的父目录 上启动一个网络服务器并打开页面:

http://localhost:34360/dist/

站点无法从域根目录加载脚本文件:

我尝试在 nuxt 配置中设置 publicPath 属性:

build: 
  publicPath: '/dist/'

应用程序编译为:

现在,nuxt 将脚本文件向下移动一级 (/dist/dist) 并再次在根级别搜索 (/dist),因此仍然找不到文件

如何配置站点,以便加载脚本和资产并且它是独立的,无论我将它放在服务器上的哪个目录中?

on GitHub 已涵盖该问题,但建议的提示(使用 publicPath)不起作用,如上所示。

旁注:我不想指定 publicPath 绝对值(即http://localhost:8080/dist),这会起作用但会产生新问题。

【问题讨论】:

【参考方案1】:

你需要router/base

router: 
  base: '/dist/'

【讨论】:

这就是我要找的!谢谢!有没有一种方法可以通用地配置它,即在应用程序可以移动到 /xyz/ 而无需更改配置和重建? 不重建我不这么认为。也许只能通过一些第 3 方模块。至于动态你可以在 nuxt.config build.extend 谢谢你,我现在会用你的解决方案! 为了将来的需要,这里是关于路由器基础配置的文档nuxtjs.org/docs/2.x/configuration-glossary/configuration-router【参考方案2】:

为了完成@Aldarund 的回答,我使用:

export default 
[…] // some code
  router: 
    base:
      process.env.NODE_ENV === "development" ? process.env.BASE_URL : "/<subfolder>/"
   // where <subfolder> is the subfolder!
;

【讨论】:

这就是我要找的。泰。

以上是关于将 nuxt.js 应用程序配置为在 Web 服务器上的子目录中工作的主要内容,如果未能解决你的问题,请参考以下文章

nuxt.js部署

Nuxt.js部署应用的方式

nuxt之服务端渲染

Nuxt+Express后端api接口配置与实现方式

利用Nuxt.js创建服务端渲染的Vue.js应用程序

vue 和 ssr+nuxt.js 配置环境变量以及pm2进行服务部署