我在运行我的 Node 应用程序时使用标志 --experimental-modules
以使用 ES6 模块。
但是,当我使用此标志时,元变量 __dirname
不可用。是否有另一种方法可以获取与此模式兼容的 __dirname
中存储的相同字符串?
原文由 Amygdaloideum 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在运行我的 Node 应用程序时使用标志 --experimental-modules
以使用 ES6 模块。
但是,当我使用此标志时,元变量 __dirname
不可用。是否有另一种方法可以获取与此模式兼容的 __dirname
中存储的相同字符串?
原文由 Amygdaloideum 发布,翻译遵循 CC BY-SA 4.0 许可协议
2021年最规范的方式
import { URL } from 'url'; // in Browser, the URL in native accessible on window
const __filename = new URL('', import.meta.url).pathname;
// Will contain trailing slash
const __dirname = new URL('.', import.meta.url).pathname;
忘记 join
从当前文件创建路径,只需使用 URL
const pathToAdjacentFooFile = new URL('./foo.txt', import.meta.url).pathname;
const pathToUpperBarFile = new URL('../bar.json', import.meta.url).pathname;
原文由 Rudolf Gröhling 发布,翻译遵循 CC BY-SA 4.0 许可协议
5 回答4.8k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
5 回答1.9k 阅读
2 回答1.3k 阅读✓ 已解决
3 回答2k 阅读
1 回答3.2k 阅读
从 Node.js 10.12 开始,有一种替代方法不需要创建多个文件并跨平台处理文件名中的特殊字符: