前言

最近在使用Nuxt3开发官网的时候,需要有一些地址跳转,但是跳转的地址是绝对路径,比如我官网是/a的域名路径,但是需要从官网跳转到/b路径的时候,nuxt就会报错。

在控制台会报警告:

bash
复制代码
No match found for location with path "/b"

在通过generate命令打包的时候还会报错:

bash
复制代码
 Error: [404] Page not found: /b

导致我们打包失败,实际上这个路径在生产环境是存在的,只是在本地开发的时候不存在。

不管我们使用A元素还是NuxtLink标签,配置的target="_blank"没有用,该报错还是报错。究其原因是因为nuxt会将这种路径识别为路由地址,为了SSG渲染,他就会去读取对应的路径文件,但是我们本地是不存在的,所以就会报错。

教程

 

解决办法我找了很久,在nuxt3的github仓库也找不到解决方案,在谷歌也搜索不到,头疼死了。

最终在nuxt2的教程中找到一个配置,测试了下,可以使用。

我们在nuxt.config.ts配置文件中配置一个ignore忽略名单,让nuxt在生成的时候忽略对应的路由。

typescript
复制代码
export default defineNuxtConfig({
  nitro: {
    prerender: {
      ignore: ["/b"]
    }
  }
});

这样就行了,打包不会报错了,使用a链接也不会有警告了,但是使用NuxtLink标签还是会在开发时有警告,但是打包不会报错。

需要注意的是,我们配置的路径其实是一个非完全匹配的路径,比如我们现在配置的是/b路径,其实它会忽略所有/b/xx的路径,可以说还是挺方便的。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。