Skip to content

GatsbyJS & Superagent: WebpackError: require is not a function #2615

@georgewelder

Description

@georgewelder

I'm trying to build my react app into static html pages with gatsbyjs. I just tried 'gatsby build', and it goes through everything fine until it wants to create the static pages, then I get:

error Building static HTML for pages failed

See our docs page on debugging HTML builds for help


  1 | if (global.GENTLY) require = GENTLY.hijack(require);   2 |
> 3 | var crypto = require('crypto');
    | ^   4 | var fs = require('fs');   5 | var util = require('util'),   6 |     path = require('path'),


  WebpackError: require is not a function

  - incoming_form.js:3 Object.map../file
    ~/formidable/lib/incoming_form.js:3:1

  - index.js:1 Object.<anonymous>
    ~/formidable/lib/index.js:1:1

  - index.js:8 Object.<anonymous>
    ~/superagent/lib/node/index.js:8:1

  - contact.js:3 Object.<anonymous>
    src/pages/contact.js:3:1

  - sync-requires.js:8 Object.exports.__esModule
    .cache/sync-requires.js:8:53

I am using npm 5.5.1.

I just commented out superagent in my contact.js file, and the build goes through fine. However, I don't understand why this should cause any problems:

contact.js:

import request from 'superagent'

export default class Contact extends React.Component {

  constructor(props) {
    super(props);
    this.state = { showThankYou: false};

    this.handleSubmit = this.handleSubmit.bind(this);
  }

handleSubmit(e) {
    e.preventDefault();
  
    request.post('http://www.mywebsite.com/email.php') 
    .send(new FormData(document.getElementById('myForm')))
    .end(function(err, res){
      if (err || !res.ok) {
        console.log('Oh no! error' + err);
      } else {
        console.log('yay got it');
      }
    });

    document.getElementById("myForm").reset();
    this.setState({showThankYou: true});
  }
  

render() {  
    return (
    <div className="row">

        <div className="form_wrapper">
          <div>
            <form id="myForm" onSubmit={this.handleSubmit}> 

              <label htmlFor="fname">First Name</label>
              <input type="text" id="fname" name="fname" />

              <label htmlFor="lname">Last Name</label>
              <input type="text" id="lname" name="lname" />

              <label htmlFor="email">E-mail Address</label>
              <input type="text" id="email" name="email" />

              <label htmlFor="message">Message</label>
              <textarea id="message" name="message" style={{height: "100px"}}></textarea>

              <input type="submit" value="Submit" />

            </form>
          </div>
        </div>    
    </div>);
}
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions