我正在开发一个React / Redux项目,并且一直在努力让superagent工作。
在关注superagent问题并在我的webpack.config文件中添加一些变通方法之后,我能够构建我的包没有错误。不幸的是,我现在在浏览器中收到错误:
require is not defined
指向该行:module.exports = require("tty");
我相信tty是一个核心节点模块。此外,tty的要求来自我在客户端的require('superagent')
电话。
这是我的webpack配置:
var path = require('path')
var webpack = require('webpack')
var config = {
devtool: 'cheap-module-eval-source-map',
target: 'node',
entry: [
'webpack-hot-middleware/client',
'./client/index'
],
output: {
path: path.join(__dirname, 'dist'),
filename: 'bundle.js',
publicPath: '/static/'
},
plugins: [
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin(),
new webpack.DefinePlugin(
{
'process.env.NODE_ENV': '"development"',
'global.GENTLY': false
}
),
],
module: {
loaders: [
{ test: /\.json$/, loaders: ['json'], },
{ test: /\.js$/, exlude: /node_modules/, loaders: ['babel', 'eslint'], },
]
},
// build breaks on eslint without this workaround
// https://github.com/MoOx/eslint-loader/issues/23
eslint: {
emitWarning: true
},
node: {
__dirname: true,
}
}
module.exports = config;
任何人都知道我的问题可能是什么?我已经搜索过webpack和superagent问题,这似乎是最相关的:https://github.com/facebook/react-native/issues/10
答案 0 :(得分:1)
您可以尝试他们的建议here - 我看到您已经将他们建议的内容添加到您的webpack配置中,但也许可以尝试使用他们的浏览器版本而不是require('superagent/lib/client)
。
我的项目中没有使用superagent,所以我不确定为什么它没有正确要求。然而,我遇到了其他库以类似方式运行的问题。我最终使用浏览器版本,然后使用webpack对其进行别名(因此,我不必记得每次在项目中需要时都提供构建版本的完整路径。)
在您的webpack配置中,您可以通过执行以下操作来添加别名:
resolve: {
alias: {
'superagent': 'path/to/node_modules/superagent/lib/client'
}
}
然后在你的项目中,你可以像往常一样require('superagent')
,webpack会在幕后正确地解决它。希望这有帮助!
答案 1 :(得分:0)
将此(从another answer here中获取)添加到我的webpack配置中对我来说是成功的秘诀:
plugins.push(new webpack.DefinePlugin({ "global.GENTLY": false }));