javascript - VueJs 2、NodeJs 和重新加载页面

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

我对 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/

相关文章:

javascript - 如果另一个元素在顶部,则防止 onClick 触发

javascript - 处理、镜像或翻转图像而不影响其他图像

php - yii dropDownList 使用 Javascript 发布空值动态填充数据

node.js - Node.js 获取 HTTP 请求名称

apache - 将 PHP 设置为始终在错误 500 时重定向

Javascript 闭包和内部作用域

mysql - ExpressJS - 如何正确关闭 MySQL 连接

node.js - Dockerized NodeJS在npm运行时选择脚本

php - htaccess 重命名为友好的 url

php - CodeIgniter:使用 HTTPS 和 AWS 时如何从 url 中删除 index.php