webpack+babel打包破坏了__dirname
发布于 8 年前 作者 nqdy666 6190 次浏览 来自 问答

app/server.js

console.log(__dirname);

使用webpack + babel打包后, 生成的文件 build/server.bundle.js

function(__dirname) {
	console.log(__dirname);
}).call(exports, "app")

node build/server.bundle.js时, 输出本应该是 前缀路径/build, 然后输出的却是app。

晕·^· 如何使用webpack打包时使得__dirname不被破坏,或者是server.bundle.js运行时,获取server.bundle.js所在目录路径。

7 回复

我觉得。。。server脚本可以不用webpack+babel吧,直接指定支持es6的node版本就可以了。实在是想兼容低版本node,又怕破坏路径,可以打包到同一个路径下。举个例子: 开发的时候是: app/server.es6.js, 打包的目标路径是:app/server.js

同意1楼,webpack是用来打包客户端SPA的,拿来打包服务器端的js显示姿势不正确

webpack & browserify 都是给浏览器端打包用的。为了保护服务端的目录信息不被泄露,__dirname __filename 会有特殊处理

配置里加上

node: { __dirname: true },

我做的这个server层不打包,node4.2+直接支持了 没必要大包,你可以参考Vue+webpack+node.js实现价格监测应用Ponitor——换个姿势爬虫!! https://cnodejs.org/topic/56fbfbdd93a6967159553a58

@xZGit 谢谢你,这个才是我所需要的。

回到顶部