我试图通过使用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'
}
};
答案 0 :(得分:1)
您需要告诉WebPack您捆绑的JavaScript将在哪里运行;在这种情况下,是在nodejs环境中。
尝试将target: 'node'
添加到您的配置中。
详细了解target
属性:https://webpack.js.org/concepts/targets/