尝试通过 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");
});
我正在尝试为每种类型的设备呈现不同的视图。如果为 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");
});