当前位置: 代码迷 >> JavaScript >> 无法在Nuxt SPA中直接访问页面
  详细解决方案

无法在Nuxt SPA中直接访问页面

热度:76   发布时间:2023-06-05 16:29:42.0

我正在使用Nuxt 2.3.4 我正在使用查询pages/_.vue文件的数据以动态处理内容。 根据 ,这是动态嵌套路由的方法。 一切都在本地工作。 但是,当我将/dist文件夹复制到运行yarn run build ,到我的托管服务器时,当我尝试直接访问/以外的任何页面时(例如https://mysite.whatever/someurl/somenestedUrl ,都会收到404错误。 https://mysite.whatever/someurl/somenestedUrl )。

根据我已将nuxt.config.js配置为具有以下设置:

/*
** Router
*/
router: {
    routeNameSplitter: '/'
},

也许我需要配置服务器nginx .conf文件来处理这些URL?

下面的代码片段是我的pages/_.vue文件。

 <template> <v-container v-if="!$apollo.loading && page"> <v-layout> <v-flex xs12 md9 > <h2>{{ page.title }}</h2> <div v-html="page.content" /> </v-flex> <v-flex id="sidebar" class="hidden-md-and-down" xs3 > <h1>Sidebar</h1> </v-flex> </v-layout> </v-container> </template> <script> import * as R from 'ramda' import gql from 'graphql-tag' export default { name: 'Page', apollo: { page: { query: gql` query GetPageByUri($uri: String!) { pageBy(uri: $uri) { id pageId title date uri content } } `, variables() { return { uri: this.$route.params.pathMatch } }, result({ data, loading, networkStatus }) { if (R.isEmpty(data)) return this.$router.replace('/404') }, update(data) { return data.pageBy } } } } </script> 

如果您使用ssr模式,那么您需要在服务器上启动nuxt服务器,例如nuxt start和从nginx到nuxt服务器的下游。 可以在找到示例配置

如果您使用的是SPA模式,则需要通过nginx将所有查询重定向到index.html,例如本示例