You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Express文件的响应值并在其他JS文件中调用?

问题结论

你当前的写法无法实现需求,核心错误是把仅能运行在Node.js服务端的Express包直接导入浏览器端运行——浏览器和Node服务是两个完全隔离的运行环境,不能直接通过import跨环境引用服务端的变量值。
这个需求完全可以通过Express实现,按以下步骤操作即可。

具体实现步骤

1. 改造Express后端,提供返回fee值的接口

在你的Express服务端代码中新增一个接口,专门向前端返回需要的fee字段值,示例代码如下:

const express = require('express')
const app = express()
const port = 3000

// 本地调试时如果前端和服务端口不一致,加这个跨域头避免浏览器拦截请求
app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*')
  next()
})

// 定义获取服务费的接口
app.get('/api/order-fee', (req, res) => {
  // 这里替换成你实际的fee取值逻辑,不管是写死、读配置还是查数据库都可以
  const fee = 200 // 示例值,按你的实际业务赋值
  res.json({ fee: fee })
})

// 如果你用Express托管前端静态文件,保留这行,对应放前端文件的目录名即可
app.use(express.static('public'))

app.listen(port, () => {
  console.log(`服务运行在 http://localhost:${port}`)
})

2. 改造前端JS代码,请求接口拿到fee值后参与计算

删掉你原来写的import response from "express";,浏览器环境不需要也不能运行服务端的Express包。改成页面初始化时先请求后端接口拿到fee值,存到全局变量里供计算逻辑使用,调整后的代码如下:

// 全局变量初始化,fee初始给0做兜底
window.menuItems = 0;
window.tips = 0;
window.orderFee = 0;

const tipTotal = document.getElementById("tip");
const orderTotal = document.getElementById("total");

// 从后端拉取服务费
async function loadOrderFee() {
  try {
    // 如果是Express托管静态文件,地址直接写'/api/order-fee'即可
    const res = await fetch('http://localhost:3000/api/order-fee');
    const data = await res.json();
    window.orderFee = data.fee;
    // 拉到值后更新一次总金额
    updateTotal();
  } catch (err) {
    console.error('服务费加载失败', err);
  }
}

// 抽离公共的金额更新逻辑,避免重复代码
function updateTotal() {
  tipTotal.textContent = `$${(window.tips / 100).toFixed(2)}`;
  orderTotal.textContent = `$${(
    Number(window.menuItems) +
    Number(window.tips) / 100 +
    window.orderFee / 100 // 这里直接用存好的全局fee值计算
  ).toFixed(2)}`;
}

// 页面加载时就拉取服务费
loadOrderFee();

document.addEventListener("click", ({ target }) => {    
  if (target.className === "food" && target.checked) {
    window.menuItems += parseInt(target.value);
  } else {
    return
  }
  updateTotal();
});
注意事项
  • 前后端运行环境隔离:Express代码跑在你自己的服务器上,前端JS跑在用户的浏览器里,两者只能通过HTTP网络请求传递数据,不能直接互相引用变量
  • 计算金额时注意统一单位:你现有逻辑里tips是按“分”存储、除以100转成“元”展示,fee的单位要和现有逻辑保持一致,避免金额计算错误
  • 如果你的Express服务同时托管前端静态页面,不需要额外配置跨域,接口直接写相对路径即可

内容的提问来源于stack exchange,提问作者joesono1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 05:27:21