首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Next.js中使用node.js模块?

如何在Next.js中使用node.js模块?
EN

Stack Overflow用户
提问于 2017-07-08 15:43:03
回答 2查看 3.3K关注 0票数 3

我需要在next.js中使用express吗?

我正在尝试将这段代码添加到next.js应用程序中。(来自npm模块示例代码: pdf2json )

代码语言:javascript
复制
let fs = require('fs');
var PDFParser = require("pdf2json");
let pdfParser = new PDFParser(this,1);

pdfParser.on("pdfParser_dataError", errData => 
   console.error(errData.parserError) );
pdfParser.on("pdfParser_dataReady", pdfData => {
fs.writeFile("./sometxt.txt", pdfParser.getRawTextContent());
pdfParser.loadPDF("./page1.pdf");
EN

回答 2

Stack Overflow用户

发布于 2017-08-19 20:02:30

您可以通过测试它是否是服务器来有条件地要求它:

代码语言:javascript
复制
static async getInitialProps({isServer}){
 var fs;
 if(isServer){
  fs=require('fs');
  //and do what ever you want
 }
}

别忘了告诉webpack不要把模块发送给客户端,把package.json改成这样:

代码语言:javascript
复制
  "browser": {
    "fs": false
  }

除非它会产生错误。

票数 2
EN

Stack Overflow用户

发布于 2017-07-13 23:55:17

最让您头疼的是,您的大部分代码必须同时在客户端和服务器上运行。您可以通过创建一个getInitialProps()方法并检查它是否在opts.req中传递,来编写仅限服务器的代码-如果是,您知道代码正在服务器端运行,您可以访问文件系统:

代码语言:javascript
复制
import React from 'react'

const doServerSideStuff = () => {
    let fs = require('fs');
    var PDFParser = require("pdf2json");
    let pdfParser = new PDFParser(this,1);

    pdfParser.on("pdfParser_dataError", errData => 
       console.error(errData.parserError) );
    pdfParser.on("pdfParser_dataReady", pdfData => {
    fs.writeFile("./sometxt.txt", pdfParser.getRawTextContent());
    pdfParser.loadPDF("./page1.pdf");
}

export default class extends React.Component {
  static async getInitialProps ({ req }) {
    if (req) {
      doServerSideStuff();
    }
    return {};
  }
  render () {
    return <div> Hello World </div>
  }
}

这还不是一个完整的例子,你真的应该让doServerSideStuff()异步(或者返回一个承诺),然后在getInitialProps中等待它,最后返回代表解析和保存结果的道具。另外,处理fs.writeFile错误。但是,希望这足以让你朝着正确的方向前进。

有关这方面的更多信息,请参阅the docs

或者你可以像你建议的那样使用Express。如果你决定走这条路,有一个good tutorialexample code可以帮助你开始。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44983810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档