如何将vue.js客户端添加到现有的node.js api?

时间:2019-04-19 22:02:13

标签: node.js rest vue.js server

我有一个具有多个端点的node.js API,它运行良好。我创建了一个单独的vue.js客户端应用程序,以使用创建的API处理数据。这也很好。我遇到了一个问题,我需要这些应用程序在同一端口上运行,以便第三方代理系统可以同时访问这两个应用程序。

我已经看到了将dist目录复制到节点服务器上的一种方法,但是由于生产环境需要此方法,因此我需要一种在构建节点API时也可以动态构建前端的方法。

除了添加要在现有节点服务器上运行的客户端应用程序之外,还有生产级别的替代方法吗?任何建议或帮助将不胜感激!

更新:我已将其添加到路由器文件中,并将客户端和服务器纳入一个项目

const path = require('path');
const router = express.Router();

router.use(express.static(path.join(__dirname, '../client/dist')));
   //production mode
if(process.env.NODE_ENV === 'production') {
  router.use(express.static(path.join(__dirname, '../client/dist')));
  //
router.get('/test', (req, res) => {
    res.sendFile(path.join(__dirname = '../client/dist/index.html'));
  })
}
//build mode
router.get('/test', (req, res) => {
  res.sendFile(path.join(__dirname+'../client/dist/index.html'));
})

1 个答案:

答案 0 :(得分:0)

您可以使用快速静态路由公开使用vue-cli构建的dist目录。此目录应包含您的构建资产以及index.html

app.use('/app', express.static(path.join(__dirname, '../client/dist'));

但是,由于您的应用程序不在根目录中,因此您现在必须在vue.config.js中添加基本URL。此后重建应用程序。

 module.exports = {
   publicPath: process.env.NODE_ENV === 'production' ? '/app/' : '',
   ...
   ...
   ...
 }

现在,您的vue应用应该可以在

上使用
  

/app/index.html