use*_*135 4 node.js webpack webpack-dev-server
在尝试从与插入的 Nodejs 模块不同的 Nodejs 模块中检索 redis 时,我收到“找不到模块的错误”:
ERROR in ./~/redis/index.js
Module not found: Error: Cannot resolve module 'net' in E:\Code-
Asst\node_modules\redis
@ ./~/redis/index.js 3:10-24
ERROR in ./~/redis/index.js
Module not found: Error: Cannot resolve module 'tls' in E:\Code-
Asst\node_modules\redis
@ ./~/redis/index.js 4:10-24
ERROR in ./~/redis/index.js
Module not found: Error: Cannot resolve module 'net' in E:\Code-
Asst\node_modules\redis
@ ./~/redis/index.js 3:10-24
ERROR in ./~/redis/index.js
Module not found: Error: Cannot resolve module 'tls' in E:\Code-
Asst\node_modules\redis
@ ./~/redis/index.js 4:10-24
ERROR in ./~/redis-parser/lib/hiredis.js
Module not found: Error: Cannot resolve module 'hiredis' in E:\Code-
Asst\node_modules\redis-parser\lib
@ ./~/redis-parser/lib/hiredis.js 3:14-32
Run Code Online (Sandbox Code Playgroud)
我将此添加到我的 webpack 配置中。
node: {
console: 'empty',
fs: 'empty',
net: 'empty',
tls: 'empty',
},
Run Code Online (Sandbox Code Playgroud)
现在只报这个错误。
ERROR in ./~/redis-parser/lib/hiredis.js
Module not found: Error: Cannot resolve module 'hiredis' in E:\Code-
Asst\node_modules\redis-parser\lib
@ ./~/redis-parser/lib/hiredis.js 3:14-32
Run Code Online (Sandbox Code Playgroud)
我遵循了http://jlongster.com/Backend-Apps-with-Webpack--Part-I上的建议 ,现在我的 webpack.config.js 就是这个。
var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var webpack = require('webpack');
var path = require('path');
var fs = require('fs');
var nodeModules = {};
fs.readdirSync('node_modules')
.filter(function(x) {
return ['.bin'].indexOf(x) === -1;
})
.forEach(function(mod) {
nodeModules[mod] = 'commonjs ' + mod;
});
module.exports = {
devtool: 'cheap-module-eval-source-map',
entry: {
app: [
'webpack/hot/dev-server',
'webpack-hot-middleware/client?reload=true',
path.join(__dirname, 'webclient', 'clientapp.jsx')
]
},
target: 'node',
output: {
path: path.join(__dirname, 'webclient', 'dist'),
publicPath: '/dist/',
filename: 'bundle.js'
},
externals: nodeModules,
module: {
loaders: [
{
test: /\.jsx$/,
loaders: ['babel?presets[]=react,presets[]=es2015,presets[]=stage-0']
}, {
test: /\.css$/,
loader: 'style-loader!css-loader'
}, {
test: /\.(jpe?g|png|gif|svg)$/i,
loaders: ['file-loader']
}, {
test: /\.json$/,
loaders: ['json-loader']
}
// other loader
]
},
resolve: {
extensions: ['', '.js', '.jsx', '/index.js', '/index.jsx']
},
node: {
console: 'empty',
fs: 'empty',
net: 'empty',
tls: 'empty',
},
plugins: [
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin(),
new HtmlWebpackPlugin({template:
path.resolve('./webclient/index.html')})
]
};
Run Code Online (Sandbox Code Playgroud)
我的构建和服务器启动时没有错误,但在浏览器上,我得到了这个:
Uncaught ReferenceError: require is not defined
Run Code Online (Sandbox Code Playgroud)
任何帮助都将受到高度赞赏 - 在过去的几天里一直在挣扎和挣扎
我在 package.json 中的 webpack 依赖项是:
"webpack": "^1.13.2",
"webpack-dev-middleware": "^1.8.4",
"webpack-dev-server": "^1.16.1",
"webpack-hot-middleware": "^2.13.0"
Run Code Online (Sandbox Code Playgroud)
问题是您正在尝试在浏览器中运行后端应用程序(为 Node.JS 制作)。该target: 'node'通知的WebPack不要触摸任何内置的节点模块(如fs或net你得到的,基本上所有的错误),使他们保持经常requires不在浏览器中存在,你会得到require is not defined错误。
从您的 webpack 配置来看,您似乎正在构建一个前端应用程序,但您不知何故想要使用redis. 那根本不可能。浏览器中不能有需要内置节点模块的模块。如果您考虑一下,这完全有道理,例如您无法从客户端访问文件系统。
您需要做的是构建一个前端和一个后端应用程序,然后redis例如使用 REST API来传达您想要的数据。
| 归档时间: |
|
| 查看次数: |
3400 次 |
| 最近记录: |