为了账号安全,请及时绑定邮箱和手机立即绑定

在后端使用网络包

在后端使用网络包

慕码人2483693 2022-09-23 18:34:56
我正在尝试使用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.jsconst 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.jsvar 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服务。这是怎么回事?
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

我相信这是因为您正在设置选项。externals

这是来自网络包文档

外部配置选项提供了一种从输出捆绑包中排除依赖项的方法。相反,创建的捆绑包依赖于该依赖关系存在于使用者(任何最终用户应用程序)环境中。此功能通常对库开发人员最有用,但是有各种各样的应用程序可用于此功能。

同样来自网络包节点外部 NPM 页面:

externals: [nodeExternals()],以忽略node_modules文件夹中的所有模块

如果您真的想在webpack输出中包含部分(或全部)或依赖项,则需要更改或删除该选项。


查看完整回答
反对 回复 2022-09-23
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

拥有模块捆绑器的要点主要是向客户端提供较小的捆绑软件大小。鉴于您的代码将从服务器端执行,并且发送到客户端的内容只是对他们发出的任何请求的响应,对于刚刚学习为后端项目设置Webpack的人来说,这实际上没有意义。

如果你有兴趣使用一些Javascript风格,你仍然可以这样做,你可以通过像Babel这样的转译器发送你的代码,但我认为情况并非如此。

关于错误:原因似乎是您已将属性设置为排除您的属性,并且这就是您的依赖项所在的位置。externalsnodeExternalsexpress


查看完整回答
反对 回复 2022-09-23
  • 2 回答
  • 0 关注
  • 60 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信