ReferenceError: __dirname is not defined in ES module scope

简介: ReferenceError: __dirname is not defined in ES module scope

运行代码

// $ node -v
// v16.14.0
console.log(__dirname);

报错:

ReferenceError: __dirname is not defined in ES module scope

原因

package.json 加了以下配置

{
  "type": "module",
  "engines": {
    "node": ">=14.16"
  }
}

解决

1、方法一

删除文件 package.json 中的配置项:"type": "module"

2、方法二

注意:该方法得到的是运行目录,并不是该文件的所在目录

import path from "path"
const __dirname = path.resolve();
console.log(__dirname);

3、方法三

import { fileURLToPath } from "url";
import path from "path";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(fileURLToPath(import.meta.url));
console.log(import.meta.url);
console.log(__filename);
console.log(__dirname);
// 输出如下:
// file:///Users/user/Desktop/demo/src/demo.js
// /Users/user/Desktop/demo/src/demo.js
// /Users/user/Desktop/demo/src

ESM下,不能直接引入json文件了,需要通过文件接口读取解析


import fs from 'fs';


const packageJson = JSON.parse(fs.readFileSync('package.json'));

console.log(packageJson);


参考


https://stackoverflow.com/questions/8817423/why-is-dirname-not-defined-in-node-repl

Node报错 ReferenceError xxxx is not defined

Pure ESM package


相关文章
|
存储 前端开发 数据安全/隐私保护
vue3用户权限管理(路由控制等)1
在前端开发的过程中,我们需要做前端的权限管理,我们需要根据后端提供的信息来控制权限,这时候就需要根据用户的操作来进行权限控制了。逻辑稍微有一点绕,多理解就好了。
673 0
|
Java Serverless 数据库连接
nacosjar包运行问题之报错何解决?
Nacos是一个开源的、易于部署的动态服务发现、配置管理和服务管理平台,旨在帮助微服务架构下的应用进行快速配置更新和服务治理;在实际运用中,用户可能会遇到各种报错,本合集将常见的Nacos报错问题进行归纳和解答,以便使用者能够快速定位和解决这些问题。
833 107
|
11月前
|
缓存 弹性计算 人工智能
阿里云服务器g9i实例:第九代企业级云服务器,2核8G、4核16G、8核32配置优惠价格
阿里云服务器ECS通用型g9i实例,是阿里云第九代企业级高性能云服务器实例规格,适用高网络包收发场景,游戏服务器,中小型数据库系统、缓存、搜索集群,搜索推广类应用,网站和应用服务器,数据分析和计算,安全可信计算场景。目前g9i云服务器2核8G、4核16G和8核32配置都有活动,实例1个月/3个月/6个月8折,1年低至6.4折。下面是小编整理的g9i云服务器实例性能测评及优惠价格。
|
网络协议 安全 网络安全
WindowsServer安装sshd服务
WindowsServer安装sshd服务
545 0
|
前端开发 JavaScript 网络架构
约定式路由生成神器:vite-plugin-pages
这篇文章介绍了如何使用vite-plugin-pages插件在Vite项目中实现约定式路由自动生成,包括搭建工程、安装插件、配置vite.config.ts文件以及创建和挂载路由。
840 0
|
人工智能 IDE 开发工具
从0到1彻底掌握Trae:手把手带你实战开发AI Chatbot,提升开发效率的必备指南!
Trae是字节跳动推出的一款免费的AI集成的开发环境,集成了Claude3.5与GPT-4o等主流AI模型,提供AI问答、智能代码生成、智能代码补全,多模态输入等功能。支持界面全中文化,为中文开发者提供了高效的开发体验
11827 11
从0到1彻底掌握Trae:手把手带你实战开发AI Chatbot,提升开发效率的必备指南!
|
存储 Java
Java中Integer.MAX_VALUE的含义
Java中Integer.MAX_VALUE的含义
1234 0
|
编解码 数据可视化
基于transform的scale属性,实现数据可视化大屏自适应缩放,保持比例不变,轻松应对不同分辨率
基于transform的scale属性,实现数据可视化大屏自适应缩放,保持比例不变,轻松应对不同分辨率
1751 0
|
小程序
【微信小程序-原生开发】富文本编辑器 editor 的使用教程
【微信小程序-原生开发】富文本编辑器 editor 的使用教程
1986 0
【微信小程序-原生开发】富文本编辑器 editor 的使用教程
|
机器学习/深度学习 人工智能 安全
AI在灾害管理中的作用:提高防灾减灾能力
【10月更文挑战第8天】AI技术在灾害管理中的应用正在逐步改变我们对灾害的应对方式。通过发挥AI的优势,我们可以更有效地预防、减轻和应对自然灾害带来的挑战,为构建安全、弹性的社会做出更大贡献。

热门文章

最新文章