【问题标题】:Vue.js + Node.js: Where is Server ConfigVue.js + Node.js:服务器配置在哪里
【发布时间】:2018-06-16 09:34:33
【问题描述】:

(注意:这里的代码完全擦洗,所以如果我说的很傻,请理解。)

我使用典型的webpack 模板启动了一个 Vue.js 项目,用于制作单页应用程序。 (我没有从这里修改文档结构。)上面没有其他框架。

为了摆脱 URL 中的哈希,文档谈到了打开 history mode。但是,在指定之后,您必须配置服务器。引用;

[...] 为您的服务器添加一个简单的包罗万象的后备路由。如果 URL 不匹配任何静态资源,它应该提供与您的应用相同的 index.html 页面。

由于我使用的是 Node.js + Vue.js,顶部没有添加任何其他内容,因此这应该是服务器配置的相应示例。

const http = require('http')
const fs = require('fs')
const httpPort = 80

http.createServer((req, res) => {
  fs.readFile('index.htm', 'utf-8', (err, content) => {
    if (err) {
      console.log('We cannot open "index.htm" file.')
    }

    res.writeHead(200, {
      'Content-Type': 'text/html; charset=utf-8'
    })

    res.end(content)
  })
}).listen(httpPort, () => {
  console.log('Server listening on: http://localhost:%s', httpPort)
})

但是,我终其一生都无法弄清楚这应该去哪里,因为它没有具体说明。这会进入 main.js 吗?路由器的 index.js?或者它是构建文件夹或配置中的其中一个东西的一部分? (如果我在 heroku 上运行生产版本,会有什么不同吗?)

【问题讨论】:

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


    【解决方案1】:

    webpack 模板带有一个 webpack-dev-server(基于 Node.js)已经为历史模式做好了准备:当你通过 npm run dev开发你的应用程序时,不需要编辑任何配置.

    当您通过npm run build部署您的应用程序时,您必须应用文档中显示的服务器配置,这将创建一个/dist 文件夹,您可以将其内容上传到任何静态服务器(不一定是 Node.js)。

    示例代码是一个Node.js服务器的主脚本,但它非常简单,它返回index.html的内容(代码中还有一个“错字”,应该是.html不是.html) 对任何请求,但这会破坏任何其他资产请求,如 CSS 或 JS。仅用于演示目的:使用index.html 响应任何路由(URL)。

    如果您打算部署到 Node.js 服务器中,您应该寻找更好的脚本。

    【讨论】:

    • 其余部分是有道理的,但我不确定第一部分是否正确——即使我正在运行npm run dev,Vue 路由器路径也总是带有/#/,即使我运行未修改的模板。
    • @cabbage 你更改了路由器文件中的mode: 'history' 部分吗?我在你的帖子里明白了。 |在我对“配置”的回答中,我的意思是服务器配置(现已编辑)。模式为客户端配置。
    • 是的,我将mode: 'history' 添加到路由器(技术上可行;如果我运行该项目,/#/ 不再显示,但一旦我尝试导航它就说它可以't get the page。我刚刚意识到这一点,但这是否与生产节点环境中的build.js文件有关?或者这无关紧要,因为npm run dev使用dev webpack配置运行......
    • (糟糕的措辞,所以我删除了之前的评论;)那么我该如何解决导航直接导致错误的问题呢? (例如:如果我导航到 /users/1,它会吐出错误,即使我已应用 mode: 'history')
    • @cabbage 不确定。一直在尝试使用新的 webpack 模板复制它,并且效果很好。 |只记得这一点:stackoverflow.com/questions/48068084/… 检查您的/build/webpack.dev.conf.js 文件并将historyApiFallback 部分与最新的github.com/vuejs-templates/webpack/blob/develop/template/build/… 进行比较
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    相关资源
    最近更新 更多