我对 VueJs 和刷新页面有疑问。当我使用特定 URL(例如:/tag/1)刷新 VueJs 应用程序时,会发生错误:“Uncaught SyntaxError: Unexpected token <”。 我的服务器是用 NodeJs 创建的,我使用 ExpressJs。我的模板引擎是 EJS。 我已经定义了一条路线:
app.get('*', (request, response) => {
response.render('layouts/index')
})
在 ExpressJs 的文档中,可以使用插件“connect-history-api-fallback”来替换 Apache 的“.htaccess”,但这不起作用。
let app = express()
app.use(history({
verbose: true,
index: '/'
}))
问题是什么?
谢谢
最佳答案
发生这种情况是因为您的客户端应用程序 (vue.js) 期望接收一些有效的 JSON 对象,但您的服务器正在提供 HTML 页面。
当尝试转换像 <html><head>...
这样的字符串时到 JavaScript 对象中,您的 JSON 解析器失败并给出该错误。要在本地复制此内容,请打开开发人员控制台并运行以下命令:
JSON.parse("<html></html>")
要找出到底出了什么问题,您需要查看开发人员控制台的网络选项卡并查看 API 请求的服务器响应 - 您期望 JSON,但服务器可能正在提供服务 index.html
假设您的服务器端一切正常并且按预期处理 API 请求,那么这可能是您的 vue 组件中的一个简单错误 - 而不是从 /api/tag/1
加载标签数据(它获取有效的 JSON 字符串),您可能正在尝试加载 /tag/1
(这只会得到你的 index.html
)。
关于javascript - VueJs 2、NodeJs 和重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40464951/