有人可以解释我曾经遇到的这个奇怪问题。
我有一个以下形状的项目:
index.js
src/
static/
favicon.ico
styles.css
server.js
routes.js
app.jsx
//[...]
dist/
/static
favicon.ico
styles.css
server.js
/src
dir被编译(通过webpack)并被uglified为/dist
目录。根项目目录中的index.js
只是一个简单的开关,如果/dist/server.js
则需要NODE_ENV=production
,如果正在开发则需要/src/server.js
。
我遇到的问题是__dirname
和__filename
在开发中运行时的行为正常 - 正确报告每个执行文件所在的目录但是,在生产中运行时,报告的唯一目录是index.js
所在的根目录。 dist/server.js
似乎没有意识到它位于/dist
文件夹中,现在似乎认为它位于项目根目录中。怪异!!
这里发生了什么?为什么缩小的dist/server.js
认为它嵌套在 ./index.js
中,但未缩小的src/server.js
在src/
目录中正确识别它?
这个webpack / uglify是否会改变它不应该的东西,或者这只是生产中运行的缩小代码的本质?我努力寻找一种解决方法,这使得dist/static/
在生产中成为正确的静态目录相当困难。
答案 0 :(得分:1)
将以下内容添加到webpack conf中可以解决此问题。看起来好像webpack默认情况下会调用__dirname,导致只有/
。 True将__dirname编译为上下文路径的字符串,false将__dirname
节点放在节点中。
node: {
__dirname: false
},
在上面的评论中为马里奥干杯,指出我正确的方向!