React和NextJS:如何检测我的客户端位置?

时间:2018-09-30 15:32:03

标签: javascript reactjs geolocation next.js

我已经使用NextJS和React创建了一个网站。我想以多种语言提供网站。为此,我想在page文件夹中创建子文件夹,例如英语/en,德语/de等。

访问者随后打开我的网站时,将根据公共IP选择正确的子文件夹:

示例: 来自美国的请求:/pages/en文件夹已选中, 该请求来自德国:/pages/de文件夹已选中,等等。

我该怎么做?由于我对NodeJS环境的经验很少,因此请向我展示具体示例,非常感谢...

我已经有一个server.js文件。也许我也可以使用它...

const express = require('express')
const next = require('next')
const bodyParser = require('body-parser')
const request = require('request')

const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()

app.prepare()
    .then(() => {
        const server = express()

        //parse application
        server.use(bodyParser.urlencoded({ extended: false }))

        //parse application/json
        server.use(bodyParser.json())

        server.post('/', (req, res) => {
            addEmailToMailChimp(req.body.email, (error, response, body) => {
                // This is the callback function which is passed to `addEmailToMailChimp`
                console.log(response);
                try {
                    var respObj = {}; //Initial response object
                    if (response.statusCode === 200) {
                      respObj = { success: `Subscribed using ${req.body.email}!`, message: response.body };
                    } else {
                      respObj = { error: `Error trying to subscribe ${req.body.email}. Please try again.`, message: response.body };
                    }
                    res.send(respObj);
                  } catch (err) {
                    var respErrorObj = { error: 'There was an error with your request', message: err.message };
                    res.send(respErrorObj);
                  }
            });
        })

        server.get('*', (req, res) => {
            return handle(req, res)
        })

        server.listen(3000, (err) => {
            if (err) throw err
            console.log('> Ready on http://localhost:3000')
        })
    })
    .catch((ex) => {
        console.error(ex.stack)
        process.exit(1)
    })

0 个答案:

没有答案