使用DefaultAzureCredential()连接Azure Blob Storage时出现SyntaxError: Identifier '__dirname' has already been declared错误
使用DefaultAzureCredential()连接Azure Blob Storage时出现SyntaxError: Identifier '__dirname' has already been declared错误
我之前也碰到过类似的坑,给你几个实用的排查和解决思路:
先检查代码里的重复声明:这个错误核心就是
__dirname被重复定义了。你可以翻一遍自己的代码,看看是不是在某个地方用const __dirname = ...或者let __dirname = ...又声明了一次,要是有的话,删掉重复的那行就行。毕竟在Node.js环境里,__dirname是默认提供的全局变量,不需要手动声明。排查Azure SDK和Meteor的兼容性:有些版本的Azure Blob Storage SDK可能和Meteor的模块加载机制不太兼容。你可以试试降级或者升级SDK的版本,找一个经过社区验证能和Meteor配合的稳定版本。
换一种方式获取路径:如果一定要用到当前模块的路径,别直接用
__dirname,可以用import.meta.url来替代,比如这样写:const path = require('path'); const __filename = new URL(import.meta.url).pathname; const __dirname = path.dirname(__filename);记得哦,这段代码只能在服务端用,Meteor客户端环境不支持这个写法。
确认Azure SDK的运行环境:Azure的Blob Storage SDK主要是给服务端用的,别在客户端代码里引用它。要是不小心在客户端加载了,很可能会触发这类路径或者变量相关的错误,把相关代码移到服务端文件里试试。
备注:内容来源于stack exchange,提问作者Tristan Nguyen
相关产品推荐
相关产品推荐

