尝试通过 Express JS 在移动设备和 Web 之间呈现不同的视图

Trying to render different view between mobile and web from Express JS

我正在尝试为每种类型的设备呈现不同的视图。如果为 true,将呈现移动设备,mobile.ejs 文件,如果不是移动设备,'pages/index.js'.

目前,我的文件 index.js 负责 Express 的配置。

快递:

const express = require('express')
const path = require('path')
const req = require('request')
const bodyParser = require('body-parser')
const PORT = process.env.PORT || 5000
const browser = require('browser-detect') 
const router = express.Router()

if(browser) {
  router.get('/', req => {
    const result = browser(req.headers['user-agent']);

    resultadoMobile = (result.mobile)

      if (resultadoMobile) {
        resultPath = "pages/mobile";
        return resultPath;
      }
      else {
        resultPath = "pages/index";
        return resultPath;
      }
  })

}

express() 

  .use(express.static(path.join(__dirname, 'public')))
  .set('views', path.join(__dirname, 'views'))
  .set('view engine', 'ejs')
  .use (bodyParser.urlencoded({ extended: true }))
  .get('/', (req, res) => res.render(resultPath))
  .listen(PORT, () => console.log(`Servidor iniciado em  ${ PORT }`))

所以,总结一下:

我需要用browser-detect检测是否是移动端,如果是则渲染'pages /mobile.ejs',如果不是 'pages/index.ejs'.

服务器的回答是:

ReferenceError: **resultPath** is not defined
    at express.use.set.set.use.get (\path\**\index.js:33:38)
    at Layer.handle [as handle_request] (\path\**\node_modules\express\lib\router\layer.js:95:5)
    at next (\path\**\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (\path\**\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (\path\**\node_modules\express\lib\router\layer.js:95:5)
    at \path\**\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (\path\**\node_modules\express\lib\router\index.js:335:12)
    at next (\path\**\node_modules\express\lib\router\index.js:275:10)
    at urlencodedParser (\path\**\node_modules\body-parser\lib\types\urlencoded.js:91:7)
    at Layer.handle [as handle_request] (\path\**\node_modules\express\lib\router\layer.js:95:5)

resultPath 变量不存在,可能不需要。

可能应该是:

.get('/', (req, res) => {
  const isMobile = browser(req.headers['user-agent']).mobile;
  res.render(isMobile ? "pages/mobile" : "pages/index");
});