Webpack/Node.js Http模块:http.createServer不是一个函数



我在尝试使用webpack的第一步时偶然发现了这个错误。

只是为了在非常基本的层面上重现效果,我像这样设置了这个微型文件夹:

节点测试-2

  • 主.js
  • 包.json
  • webpack.config.js

包含以下内容:


包.json

{
"name": "node-test-2",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "webpack && node bundle.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^2.2.0"
}
}

webpack.config.js

var path = require('path');
module.exports = {
entry : './main.js',
output : {
path : path.resolve(__dirname),
filename : 'bundle.js'
}
}

主.js

var http   = require('http');
console.log("Creating Server");
var server = http.createServer(function(req, res){
console.log('Connection Estabilished!');
res.write('HELLO!');
res.end();
});
console.log("Listening on port " + 8000);
server.listen(8000);

现在,如果我只是node main.js一切都按预期工作。

相反,如果我npm start,从而提示 webpack 捆绑包中需要的所有内容.js fle 然后运行它,则运行时会出现错误http.createServer is not a function错误。

进一步的检查表明,该函数似乎根本没有在捆绑.js文件中声明。

我在这里错过了什么?这是 webpack 实际上不是为了什么吗?

更多,也许毫无意义的信息:

  • 在 Windows 10 上运行
  • 使用节点版本 6.9 和 7.10 进行测试
  • 在撰写本文时已使用 webpack 和 webpack@beta 进行测试

默认情况下,Webpack 针对浏览器环境,对于这些环境http.createServer()没有多大意义。

您可以通过将以下内容添加到 Webpack 配置来更改目标:

entry  : './main.js',
target : 'node',
...

https://webpack.js.org/configuration/target/

最新更新