首页 > 解决方案 > 为生产和开发构建构建,但是在运行 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。

标签: node.jswebpack

解决方案


我的构建将保存在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.


推荐阅读