node.js - 为生产和开发构建构建,但是在运行 FE 时,API 不起作用
问题描述
我已经完成了使用 webpack 为我的节点服务器进行开发和生产构建。我的构建将保存在 dist/main.js 文件中。当我运行“npm start”时,它会正确运行 dist/main.js,express 服务器正在监听并且 mongoDB 已连接。但是当我启动我的应用程序并点击登录时,api 说 - 无法 POST /login
我是 webpack 的新手,正在寻找解决方法。
我的 webpack.config.js 在下面,
module.exports = {
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
}
]
},
target: 'node',
node: {
dns: 'mock',
net: 'mock',
fs: 'empty',
tls: 'empty',
module: 'empty'
}
};
Package.json 脚本将是,
"scripts": {
"start": "node dist/main.js",
"dev": "webpack --mode development ./src/index.ts --output ./dist/main.js",
"prod": "webpack --mode production ./src/index.ts --output ./dist/main.js"
},
我得到的实际结果是,
请求 URL:http://localhost:23457/login
请求方法:POST
状态码:404 Not Found
远程地址:[::1]:23457
推荐人策略:no-referrer-when-downgrade
它在登录本身失败。
我认为 dist 构建不提供 routes.ts 文件的 API。
解决方案
我的构建将保存在
dist/main.js
. 当我运行时npm start
,它运行node dist/main.js
正常,快速服务器正在侦听并且 mongoDB 已连接。
Webpack 的工作是构建文件,即dist/main.js
基于您的源代码进行构建。由于它正确地运行了这个脚本,Webpack 的工作就完成了,并且 Webpack 可以正常工作,并且在您的项目中符合预期。
404 错误源自您的快递服务器。确保您的快速服务器可以处理 POST 请求/login
,例如:
const express = require('express');
const app = express();
app.post('/login', (req, res) => {
// do your stuff here
// make sure you don't send a 404 here also
});
app.listen(/* ... */)
如果无法访问您的服务器代码,就不可能确定您的服务器在哪里存在错误。确保您的快速服务器记录所有错误,您自己可能知道出了什么问题,但基本上,您的代码中的某处应该有类似上面的内容,否则,您的服务器将响应 404 for /login
.
推荐阅读
- macos - 将变量传递给 OSX 包 Installer 上的安装程序
- javascript - 使用 mapstatetoprops 提取数据
- javascript - Spectrum,选项 showInput,显示不可编辑的输入文本
- xamarin.forms - 无论如何要在条目占位符中添加一个图标?
- c++ - 当我尝试构建代码时,得到“没有重载函数的实例与指定类型匹配”
- javascript - 这个计算函数有什么问题?
- python - 无法识别平台 GPU 的 NUMA 节点
- c# - 在任何“a-zA-Z”字符之后从字符串中删除任何内容
- matrix - 如何在比较 MAXIMA 中的两个矩阵时使用“求解”?
- java - 展示如何显示和更新browsefragment数据的初学者leanback教程