gpt4 book ai didi

javascript - GatsbyJS 和 super 代理 : WebpackError: require is not a function

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:58:48 25 4
gpt4 key购买 nike

我正在尝试使用 gatsbyjs 将我的 React 应用程序构建到静态 html 页面中。我刚刚尝试了“gatsby build”,它通过了一切,直到它想要创建静态页面,然后我得到:

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

我正在使用 npm 5.5.1。

编辑:

所以我只是在我的 contact.js 文件中注释掉了 superagent,然后构建就顺利进行了。但是,我不明白为什么这会导致任何问题:

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>);
}
}

最佳答案

我遇到了同样的错误(在我的例子中来自 Auth0)。我能够通过修改 webpack 配置来解决它。

Gatsby v1

gatsby-node.js 添加:

exports.modifyWebpackConfig = ({ config, stage }) => {
config.plugin("webpack-define", webpack.DefinePlugin, [{ "global.GENTLY": false }])

return config;
};

Gatsby v2

gatsby-node.js 添加:

exports.onCreateWebpackConfig = ({ stage, actions, plugins }) => {
actions.setWebpackConfig({
plugins: [
plugins.define({
'global.GENTLY': false
})
]
})
}

我最终遇到了其他问题,因为 auth0-lock 不支持服务器端呈现,但这解决了 require is not a function 错误。

关于javascript - GatsbyJS 和 super 代理 : WebpackError: require is not a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46934386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com