我正在开发一个nuxtjs项目,该项目将为静态使用而生成。当然它使用Javascript例如导航,一些表格等等。
当我在 npm run dev 中使用该页面时,一切正常。
使用 npm run build && npm run generate 导出后,我将/ dist生成的内容部署到我的服务器(用户要求的cdn,在这种情况下为Google Cloud Storage),我可以使用该页面而无需如果不添加 index.html 后缀,则会出现任何问题。
示例:
但是
不是真的访问https://page.com/subpage/index.html。
是的,它使用CSS和DOM呈现内容,但是Javascript根本不起作用。在Google Chrome浏览器的开发工具中,我可以看到在两种情况下javascript似乎都已加载,但在第二种情况下并未调用。请参阅所附的屏幕截图。两者都是相似的。
我的nuxt-Config在渲染,构建配置方面几乎是空的。我只是禁用了ressourceHints,仅此而已。我不确定这是否是路由器仅接受包含index.html的文件夹的问题。路由器路径是由nuxtLinks动态生成的。
有什么想法吗?
答案 0 :(得分:2)
更新
搜索了大约1-2小时后,我终于找到了解决方法。
有一种方法可以将index.html后缀添加为路由器的每个路径的别名。
通过在nuxt-config中扩展路由器,理论上您可以基于路由器路径添加别名。这并不总是最好的方法,但是在这种情况下它会很好地工作。
router: {
extendRoutes(routes) {
routes.forEach((route) => {
// When options.generate.subFolders is true (default)
const alias =
route.path.length > 1 ? `${route.path}/index.html` : '/index.html'
// When options.generate.subFolders is false
// const normalizedRoute = route.path.replace(/\/$/, '') // Remove trailing slashes if they exist
// const alias =
// route.path.length > 1 ? `${normalizedRoute}.html` : '/index.html'
route.alias = alias
})
}
}
我从animagnam(https://www.reddit.com/r/Nuxt/comments/gzwrqu/visiting_generated_site_routes_with_trailing/ftnylrt?utm_source=share&utm_medium=web2x&context=3)的reddit帖子中删除了此消息,它在生产和测试中都非常有效。