我对VueJs和刷新页面有疑问。当我使用特定URL刷新我的VueJs应用程序时(例如:/ tag / 1),会发生错误:“未捕获的SyntaxError:意外的令牌<”。 我的服务器是用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: '/'
}))
问题是什么?
谢谢,
答案 0 :(得分:0)
这种情况正在发生,因为您的客户端应用程序(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
)。