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

Node.js项目中客户端AJAX请求如何获取网站根目录路径?

解决客户端AJAX请求路径从网站根目录开始的问题

首先得明确:你遇到的require is not defined错误,核心原因是客户端JavaScript环境不支持Node.js的require和path模块——这些都是Node.js服务端特有的API,浏览器完全没有相关实现,所以直接把服务端代码搬到客户端肯定会报错。

下面给你几个简单实用的方案,轻松让AJAX请求路径基于网站根目录:

方案1:直接使用根路径前缀 /

这是最省心的方法,所有需要从根目录发起的请求,直接以/开头即可。比如:

  • 假设你的服务器API接口是/api/get-data,不管当前页面在/pages/user还是/articles/detail/123,直接写:
// 不管当前页面在哪,都会请求网站根目录下的api/get-data
fetch('/api/get-data')
  .then(res => res.json())
  .then(data => console.log(data));

浏览器会自动把这个路径解析为http://你的域名/api/get-data,完全不受当前页面位置影响。

方案2:定义全局根路径变量(适配部署在子目录的场景)

如果你的项目未来可能部署在网站的子目录下(比如http://你的域名/my-app/),可以先在页面全局定义一个根路径变量,后续所有请求都基于它:

<!-- 在页面头部的script标签里定义 -->
<script>
  // 部署在根目录就写'/', 部署在子目录就写'/my-app/'
  window.APP_BASE_URL = '/';
</script>

然后在客户端JS里复用这个变量:

fetch(window.APP_BASE_URL + 'api/get-data')
  .then(res => res.json())
  .then(data => console.log(data));

后续根目录变化时,只需要修改这个全局变量就行,不用挨个改请求路径。

补充:为什么你的原代码行不通?

var path = require(path); var myPath = path.join(__dirname, '../');

这段是标准的Node.js服务端写法:

  • require是Node.js的模块加载机制,浏览器没有这个函数
  • __dirname是Node.js提供的当前文件所在目录的绝对路径,浏览器环境根本不存在这个变量

这类代码只能在Node.js服务端运行,绝对不能直接放到客户端JS里哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:37:55