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://www.toymoban.com/news/detail-512730.html

  • https://stackoverflow.com/questions/8817423/why-is-dirname-not-defined-in-node-repl
  • Node报错 ReferenceError xxxx is not defined
  • Pure ESM package

到了这里,关于ReferenceError: __dirname is not defined in ES module scope的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue.js报错问题解决:[Vue warn]: Error in v-on handler: “ReferenceError: XXX is not defined“.

    代码: 报错信息: 原因:count 忘加 this 了。。。 1、2

    2024年02月13日
    浏览(61)
  • “ReferenceError: Dialog is not defined“

    解决办法:变成 this.$dialog 引入 Dialog 组件后,会自动在 Vue 的 prototype 上挂载 $dialog 方法,在所有组件内部都可以直接调用此方法。

    2024年02月11日
    浏览(55)
  • Uncaught ReferenceError: $ is not defined几种处理方式

    1.未引进JQuery的js文件,可以去JQuery官网下载 2.jquery的js文件路径错误,src后可以写相对路径或者绝对路径,推荐写绝对路径 script type=\\\"text/javascript\\\" src=\\\"bookjs/jquery.js\\\"/script 3.最郁闷的一种,浏览器中文件都能读取,但是就是不能调用,代码顺序问题,应该先引用jquery.js文件,再

    2024年02月07日
    浏览(51)
  • Webpack 解决:ReferenceError: dist is not defined 的问题

    其一、报错为: ReferenceError: dist is not defined 中文为: ReferenceError:dist 未定义 其二、问题描述为: 想在 webpack 的配置中,创建一个 dist 文件夹 来存放 npm run build 打包后的文件,但发现运行代码后报错; 其三、控制台报错的页面显示为: 根据报错的提示: dist 未定义 可知,

    2024年02月07日
    浏览(63)
  • node.js报错 ReferenceError require is not defined 解决方案

    从node.js 14版及以上版本中,require作为COMMONJS的一个命令已不再直接支持使用,所以我们需要导入createRequire命令才可以; 在使用 require 的地方需要加入以下代码:

    2024年01月18日
    浏览(57)
  • Vue使用ffmpeg,报ReferenceError: SharedArrayBuffer is not defined 如何解决

    “SharedArrayBuffer is not defined” 错误是因为在浏览器环境中,SharedArrayBuffer 对象被认为是一种潜在的安全风险。为了防止 Spectre 攻击等漏洞,现代浏览器通常会禁用或限制对 SharedArrayBuffer 的使用。 SharedArrayBuffer 是一种 JavaScript 对象,用于在多线程环境中共享内存。然而,由于

    2024年02月11日
    浏览(59)
  • Vite+web3:报错出现ReferenceError: process is not defined

    近期使用vite脚手架搭建一个区块链项目,需要web3这个依赖库,但是在项目当中引入web3后,报错出现:  解决方案是在vite配置文件vite.config.js当中配置: 然后正常引入即可:

    2024年02月12日
    浏览(73)
  • js出现Uncaught ReferenceError: XXX is not defined错误的解决办法

    javascript提示:Uncaught ReferenceError: XXX is not defined的意思是函数XXX()没有被定义。js一般出现Uncaught ReferenceError: XXX is not defined这样的错误,大概率是你把函数放在了 window.onload 里面。 出现这个问题的原因是: 1.window.onload事件是在整个页面包括dom结构、图片等等全部加载完成之后

    2024年02月09日
    浏览(52)
  • 小程序报错Uncaught ReferenceError: __wxConfig is not defined解决方法

    首先检查一下小程序有没有安装所需要的依赖包,这里以我自己的项目举例,我用的npm,所以要执行命令(npm  i)安装依赖包 在小程序端构建npm: 开发者工具菜单中选择  “工具”—— “构建npm” 构建好之后项目应该就可以跑起来了,如果还是不行尝试重新编译或者重启

    2024年02月11日
    浏览(63)
  • vue3使用process报错Uncaught ReferenceError: process is not defined

    之前使用 vue-cli创建项目 时,使用 process.env.变量名 获取环境变量(在根目录下配置环境配置文件之后)。 今天使用 vite+vue3 创建项目时,使用相同的方法却获取不到,还报以下错误,这是为什么呢? 后来查看了VITE官网才知道,使用vite+vue的时候环境变量的获取方式变成如下

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包