与Webpack捆绑后的模块功能无法识别

时间:2018-04-07 15:34:31

标签: javascript node.js macos webpack

我试图通过使用webpack将我的node.js项目捆绑到一个单独的文件中,该文件将包含它所需的所有模块。
创建bundle.js文件后,我无法运行它,因为无法识别所需模块中的某些功能:
Server.js文件中,我需要'http',并使用http.createServer()函数。
当我运行该文件时,它会显示:TypeError: r.createServer is not a function
如何正确地将项目与所有模块捆绑在一起?

我的Package.json文件的相关部分:

  "dependencies": {
    "lodash": "4.17.4"
  },
  "devDependencies": {
    "babel-loader": "^7.1.4",
    "eslint": "^4.19.1",
    "jasmine": "^3.1.0",
    "webpack": "^4.5.0",
    "webpack-cli": "^2.0.14"
  },
  "scripts": {
    "test": "npm run lint && jasmine",
    "lint": "sh util/lintRunner.sh",
    "fix": "sh util/lintFixer.sh",
    "build": "webpack -p",
    "clean": "rm -rf dist/"
  }

我的webpack.comfig.js文件:

const path = require('path');

module.exports = {
    entry: [
        './Server/Server.js',
    ],
    output: {
        path: path.join(__dirname, 'dist'),
        filename: 'bundle.js',
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                use: ['babel-loader'],
            },
        ],
    },
    node: {
        fs: 'empty',
        dns: 'empty'
    }
};

1 个答案:

答案 0 :(得分:1)

您需要告诉WebPack您捆绑的JavaScript将在哪里运行;在这种情况下,是在nodejs环境中。

尝试将target: 'node'添加到您的配置中。

详细了解target属性:https://webpack.js.org/concepts/targets/