Vue.js SPA static Nuxt应用程序在通过共享主机部署时无法获取静态文件,但在本地服务器上运行良好
我正在尝试在共享托管服务Bluehost上托管的子域上部署SPA nuxt项目 我按照运行了nuxt构建和nuxt导出,并尝试在本地服务器上提供生成的静态文件dist,效果很好 但一旦我尝试实际部署,页面无法成功加载,我在Chrome devtools的网络选项卡中有多个404,说它无法获取在_nuxt目录中找到的所有生成的静态js文件:Vue.js SPA static Nuxt应用程序在通过共享主机部署时无法获取静态文件,但在本地服务器上运行良好,vue.js,deployment,request,http-status-code-404,nuxt.js,Vue.js,Deployment,Request,Http Status Code 404,Nuxt.js,我正在尝试在共享托管服务Bluehost上托管的子域上部署SPA nuxt项目 我按照运行了nuxt构建和nuxt导出,并尝试在本地服务器上提供生成的静态文件dist,效果很好 但一旦我尝试实际部署,页面无法成功加载,我在Chrome devtools的网络选项卡中有多个404,说它无法获取在_nuxt目录中找到的所有生成的静态js文件: runtime.c59f93b.js commons.app.db9bcff.js app.fe0b14c.js 有人知道这是什么原因吗?或者如果需
runtime.c59f93b.js
commons.app.db9bcff.js
app.fe0b14c.js
有人知道这是什么原因吗?或者如果需要向nuxt.config.js添加任何内容?尝试搜索文档,但没有结果。ff是我的numxt.config.js:
提前感谢。问题是我试图部署到子目录,而不是站点的主目录,因此Nuxt试图从错误的目录获取文件,即 /mainsite/public/commons.app.db9bcff.js 应该是什么时候 /mainsite/subdir1/dirname/public/commons.app.db9bcff.js 解决方案是在nuxt.config.js中手动配置路由器属性:
感谢user@Rie指出了这个属性,它最终成为了解决方案。这可能是相关的:似乎是Nuxt上的一个bug。在github上再也找不到这个问题了,但这是一个很长的问题,有很多不同的解决方案。基本路径设置是否正确?当它在控制台中抛出错误时,它是否确实显示了丢失的js文件的正确路径?我不知道URL指向何处以及您的目标目录实际上是什么,所以我需要更多信息:d如果您在子目录中设置了它,您需要设置此属性,尽管尝试此解决方案@Rie非常感谢,通过添加完整路径,我最终在编辑该属性后使其工作!是的,问题是我在一个子目录中设置/部署它,而不是作为主站点,因此nuxt尝试获取文件的基本路径不正确:它从根目录获取,而不是从生成的dist文件夹所在的目录获取。
export default {
mode: 'spa',
/*
** Headers of the page
*/
head: {
title: process.env.npm_package_name || '',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ hid: 'description', name: 'description', content: process.env.npm_package_description || '' }
],
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
]
},
/*
** Customize the progress-bar color
*/
loading: { color: '#fff' },
/*
** Global CSS
*/
css: [
],
/*
** Plugins to load before mounting the App
*/
plugins: [
],
/*
** Nuxt.js dev-modules
*/
buildModules: [
],
/*
** Nuxt.js modules
*/
modules: [
],
/*
** Build configuration
*/
build: {
/*
** You can extend webpack config here
*/
extend (config, ctx) {
}
},
target: 'static'
}
router: {
base: '/subdir1/dirname/'
}