您的位置:首页 > Web前端 > Node.js

终于解决:在客户端和服务端都用dojo Loader来实现异步加载后,Node.js的全局变量__dirname无法使用

2015-08-22 01:44 1151 查看
我follow了dojo官网上Dojo and Node.js的教程,在客户端和服务端都使用Dojo Loader来实现异步加载,这样做的好处是显而易见的,实现了代码风格的统一,而且还可以利用dojo中诸如Deferred这样的对象,但是我也遇到一个头疼的问题:那就是Node.js的一些全局变量如__dirname无法使用了。因为使用了dojo的异步加载模式之后,除了启动脚本(启动Dojo Loader)外,Dojo Loader已经全面接管了原来Node.js的AMD Loader,访问__dirname只会得到undefined。这导致我无法正常使用Express的res.sendFile(filename,options)方法,因为options的root参数需要提供绝对路径,而dojo Loader貌似没有提供获得模块绝对路径的接口,仅有一个require.toUrl(mid)可以得到模块相对于baseUrl的路径,关于这个问题在dojo的论坛上我找到了同样的提问。dojo官网改版后连dojo论坛的入口也找不到了,我还是通过google才找到的,汗!而Dojo and Node.js的教程的作者Kitson Kelly给出的解释如图:  


图中的链接我打开后并没有发现解决方案,(难道我英文太差了没看懂?)最后还是7楼主英明,给出了一个虽然ugly但是管用的方法,如图:



随后可以通过dojoConfig.baseDir来获得__dirname,不过如果谁有更好的解决方案请不吝赐教!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: