终于解决:在客户端和服务端都用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,不过如果谁有更好的解决方案请不吝赐教!
图中的链接我打开后并没有发现解决方案,(难道我英文太差了没看懂?)最后还是7楼主英明,给出了一个虽然ugly但是管用的方法,如图:
随后可以通过dojoConfig.baseDir来获得__dirname,不过如果谁有更好的解决方案请不吝赐教!
相关文章推荐
- C# 泛型类的实现,链表的封装LinkedListNode
- Remove Nth Node From End of List
- node.js基础:数据存储
- SQL Server XML基础学习之<6>--XQuery的 value() 方法、 exist() 方法 和 nodes() 方法
- Populating Next Right Pointers in Each Node II
- Node.js笔记(一):node.js 和 express 的安装和配置
- 玩转Node.js - 06. 使其模块化
- hadoop Unhealthy Nodes问题解决
- Pomelo:网易开源基于 Node.js 的游戏服务端框架
- 使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
- 有关Node、Element,HTMLCollection、NodeList
- How to Run Node.js with Express on Mobile Devices
- node-webkit:开发桌面+WEB混合型应用的神器
- Leetcode: Populating Next Right Pointers in Each Node
- LeetCode题解:Remove Nth Node From End of List
- Populating Next Right Pointers in Each Node I&&II ——II仍然需要认真看看
- AngularJS+Node.js+socket.io 开发在线聊天室
- 基于Grunt&Mocha 搭建Nodejs自动化单元测试框架(含代码覆盖率统计)
- node.js 安装
- hadoop2.x通过Zookeeper来实现namenode的HA方案以及ResourceManager单点故障的解决方案