在zeit / next.js中使用节点模块

时间:2016-11-01 08:11:11

标签: javascript node.js reactjs isomorphic-javascript

我对同构反应有简单的应用(zeit / next.js https://github.com/zeit/next.js)。 如何在服务器端使用节点模块?

代码示例:

import React from 'react'

export default class extends React.Component {
        static async getInitialProps({ req }) {
            const isServer = !!req;
            if (isServer){
                // how!?
            }
            return {
                isServer: isServer
            }
        }

        render() {
            return (
                <div>test</div>
            )
        }
    }

2 个答案:

答案 0 :(得分:1)

您还可能希望使用自定义server.js从请求对象中的服务器发送一些数据。

&#13;
&#13;
const dev = process.env.NODE_ENV !== 'production'

const { createServer } = require('http')
const { parse } = require('url')
const { readFileSync } = require('fs')
const next = require('next')
const mobxReact = require('mobx-react')
const app = next({ dev })
const handle = app.getRequestHandler()

mobxReact.useStaticRendering(true)

app.prepare()
  .then(() => {
    createServer((req, res) => {
      const parsedUrl = parse(req.url, true)
      req.rules = JSON.parse(readFileSync('./micro/rules.json', 'utf8')).rules
      handle(req, res, parsedUrl)
    })
      .listen(3000, err => {
        if (err) throw err
        console.log('> Ready')
      })
  })
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您通常可以安装npm包

npm install <name package>

并在您的代码中使用

import <Componente of package> from '<name package>'

我希望有所帮助!