VueJs 2,NodeJs和重新加载页面

时间:2016-11-07 12:13:59

标签: javascript node.js .htaccess vue.js vue-router

我对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: '/'
}))

问题是什么?

谢谢,

1 个答案:

答案 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)。