mirror of
https://github.com/KazooTTT/kazoottt-blog.git
synced 2025-06-25 11:41:29 +08:00
Update docs and sort content
This commit is contained in:
@ -17,6 +17,44 @@ NotionID-notionnext: 543bfc66-a416-4704-92be-9a93fed191a8
|
||||
link-notionnext: >-
|
||||
https://kazoottt.notion.site/__dirname-is-not-defined-in-ES-module-scope-543bfc66a416470492be9a93fed191a8
|
||||
rinId: 14
|
||||
description: >-
|
||||
# ES Module 问题:__dirname 不定义
|
||||
|
||||
|
||||
在使用
|
||||
TypeScript创建的ESM文件中,遇到__dirname不定义的问题通常是因为使用了module的语法,应该改为ESM的写法。两种解决方法分别是改为module的写法和改为ESM的写法。
|
||||
|
||||
|
||||
## 改为module的写法
|
||||
|
||||
|
||||
在这种方法中需要把import改为require,将后缀从ts改为cts。
|
||||
|
||||
|
||||
但这种方式并不推荐,因为它可能会导致文件相对路径的问题。
|
||||
|
||||
|
||||
## 改为ESM的写法
|
||||
|
||||
|
||||
可以通过利用import.meta.url和fileURLToPath函数,获取当前模块的目录路径来解决__dirname不定义的问题。
|
||||
|
||||
```typescript
|
||||
|
||||
import { fileURLToPath } from "url"
|
||||
|
||||
import path from "path"
|
||||
|
||||
|
||||
// 获取当前模块的目录路径
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url)
|
||||
|
||||
const __dirname = path.dirname(__filename)
|
||||
|
||||
```
|
||||
|
||||
这种方法推荐使用,避免了相对路径的问题。
|
||||
---
|
||||
|
||||
# __dirname Is not Defined in ES Module Scope
|
||||
|
Reference in New Issue
Block a user