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

EJS是否不兼容ES6?切换ES6语法后视图查找失败该如何解决

报错原因

你自行实现的ES6环境__dirname计算逻辑存在兼容问题,没有正确将URL路径转为本地文件系统路径:

  • 直接从new URL(import.meta.url).pathname获取的是URL编码后的字符串,若路径包含空格、中文、特殊字符会被编码为%xx格式,和本地实际路径不匹配
  • Windows系统下该路径会生成/C:/xxx/xxx格式的字符串,开头多余的斜杠会导致路径解析错误
  • 部分类Unix环境也会出现路径前缀不匹配的问题
    错误的__dirname导致express的views目录路径指向错误,因此无法找到对应的index.html模板文件。
修复方案

使用Node.js内置的url.fileURLToPath方法先完成URL到本地路径的转换,再计算__dirname,替换你原来的__dirname定义代码即可:

import { fileURLToPath } from 'url';
import path from 'path';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

替换后逻辑和CommonJS原生__dirname行为完全一致,无需修改其余代码即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:18:03