使用Webpack在浏览器中使用需求模块

Roh*_*gga 6 javascript node.js express browserify webpack

过去2天,当我可以在5分钟内在browserify中执行相同操作时,尝试在webpack的浏览器中使用require('modules')...

这是我的webpack.config.js

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 = {
    entry: "./main.js",
    output: {
        filename: "bundle.js"
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,无论我做什么我都会遇到某种错误。目前我得到:

bundle.js:390 Uncaught Error: Cannot find module "net"
Run Code Online (Sandbox Code Playgroud)

而当我运行webpack时,会引发以下错误:http ://pastebin.com/RgFN3uYm

我遵循了https://webpack.github.io/docs/tutorials/getting-started/http://www.pauleveritt.org/articles/pylyglot/webpack/,但我仍然遇到这些错误。

我试图用它来运行它:webpack ./main.js -o bundle.js但是它仍然不起作用。

如何解决?

Pio*_*ski 3

您应该添加目录来解析,例如

 resolve: {
        modulesDirectories: ['./app/', './node_modules']
 }
Run Code Online (Sandbox Code Playgroud)

更新: 添加 json 加载器

npm install --save-dev json-loader

module: {
    loaders: [
      { test: /\.json$/, loader: 'json-loader' }
    ]
  }
Run Code Online (Sandbox Code Playgroud)

fs、net、tls 也是 Node.js 的库,不适用于浏览器内使用。您应该添加:

node: {
    fs: 'empty',
    net: 'empty',
    tls: 'empty'
  }
Run Code Online (Sandbox Code Playgroud)