【发布时间】:2016-10-07 00:01:43
【问题描述】:
有人能解释一下我遇到的这个奇怪的问题吗?
我有一个如下形状的项目:
index.js
src/
static/
favicon.ico
styles.css
server.js
routes.js
app.jsx
//[...]
dist/
/static
favicon.ico
styles.css
server.js
/src 目录被编译(通过 webpack)并被丑化成 /dist 目录。项目根目录下的index.js 只是一个简单的开关,如果NODE_ENV=production 需要/dist/server.js,如果在开发中需要/src/server.js。
我遇到的问题是 __dirname 和 __filename 在开发中运行时的行为与预期一样 --- 正确报告目录 每个 执行的文件所在的目录。但是,在运行时生产,报告的唯一目录是index.js 所在的根目录。 dist/server.js 似乎没有认识到它在 /dist 文件夹内,现在似乎认为它在项目根目录内。奇怪!!
这里发生了什么?为什么缩小的dist/server.js 认为它嵌套在内 ./index.js,但非缩小的src/server.js 正确识别它在src/ 目录内?
这个 webpack/uglify 是在转换它不应该转换的东西,还是这只是在生产中运行的缩小代码的本质?我正在努力寻找解决方法,这使得将 dist/static/ 设置为生产中的正确静态目录相当困难。
【问题讨论】:
-
不是 100% 肯定,但我敢打赌,这是由于缩小 js 中的东西的定义/执行方式。代码不再是该文件的一部分,而是在“外部”运行,这使它看起来好像它在根目录中。
-
有什么办法可以解决这个问题吗?
-
这实际上可能是 this question 的副本,其中也包含一个可能的解决方案。
标签: javascript node.js webpack uglifyjs