CNode

webpack+babel打包破坏了__dirname

问答
Nnqdy666发布于10 年前最后回复10 年前7 回复7098 浏览0 收藏

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)

K
klesh#1·10 年前

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

M
magicdawn#2·10 年前

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

X
xZGit#3·10 年前

配置里加上

node: { __dirname: true },

G
giscafer#4·10 年前

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

N
nqdy666#5·10 年前
引用 xZGit配置里加上 node: { dirname: true },

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

L
leungwensen#6·10 年前

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

T
think2011#7·10 年前

同一楼

参与回复
登录后即可参与回复。登录