在后端使用网络包

我正在尝试使用express制作节点后端服务,我也想使用webpack将所有内容捆绑在单个文件中(不知道它是否有意义,我只是在学习)。我以这种方式设置:package.json


{

  "name": "something",

  "version": "1.0.0",

  "description": "",

  "main": "index.js",

  "scripts": {

    "build": "webpack --config webpack.config.js --mode=production",

    "test": "echo \"Error: no test specified\" && exit 1"

  },

  "author": "",

  "license": "ISC",

  "devDependencies": {

    "webpack": "^4.43.0",

    "webpack-cli": "^3.3.11",

    "webpack-node-externals": "^1.7.2"

  },

  "dependencies": {

    "express": "^4.17.1"

  }

}

这是我的文件:webpack.config.js


const path = require('path');

const nodeExternals = require('webpack-node-externals');

const webpack = require('webpack');

const backend = {

  name: 'backend',

  target: 'node',

  devtool: 'source-map',

  externals: [nodeExternals],

  entry: path.resolve(__dirname, 'src/index.js'),

  output: {

    path: path.resolve(__dirname, 'bin'),

    filename: 'app.js'

  }

};


module.exports = [backend];

module.exports.plugins = [

  new webpack.SourceMapDevToolPlugin({})

];

这是我的:src/index.js


var express = require('express');

var httpsrv = express();


httpsrv.get("/", function(res, rep) {

  console.log("inside get.");

  rep.send("<div>hey js!</div>");

});


httpsrv.listen(8080, function() {

  console.log("server started.");

});

很基本,不是吗?当我构建并运行()应用程序时,一切都很好,它的行为符合预期,但有些事情听起来很奇怪。文件太短而无法捆绑库,当我将我的放入容器中时,我收到此错误:node ./bin/app.jsapp.jsexpressapp.jsnode:alpine


所以我没有得到我想要的:单个文件中的Web服务。这是怎么回事?


慕码人2483693
浏览 63回答 2
2回答

MM们

我相信这是因为您正在设置选项。externals这是来自网络包文档外部配置选项提供了一种从输出捆绑包中排除依赖项的方法。相反,创建的捆绑包依赖于该依赖关系存在于使用者(任何最终用户应用程序)环境中。此功能通常对库开发人员最有用,但是有各种各样的应用程序可用于此功能。同样来自网络包节点外部&nbsp;NPM 页面:externals: [nodeExternals()],以忽略node_modules文件夹中的所有模块如果您真的想在webpack输出中包含部分(或全部)或依赖项,则需要更改或删除该选项。

慕码人8056858

拥有模块捆绑器的要点主要是向客户端提供较小的捆绑软件大小。鉴于您的代码将从服务器端执行,并且发送到客户端的内容只是对他们发出的任何请求的响应,对于刚刚学习为后端项目设置Webpack的人来说,这实际上没有意义。如果你有兴趣使用一些Javascript风格,你仍然可以这样做,你可以通过像Babel这样的转译器发送你的代码,但我认为情况并非如此。关于错误:原因似乎是您已将属性设置为排除您的属性,并且这就是您的依赖项所在的位置。externalsnodeExternalsexpress
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript