__dirname在使用webpack捆绑的节点js中不起作用

我目前的目录是

D:\bkp\Programming\TestWorks\nodejs\testApp 

但是当我使用__dirname并试图显示一个文件与快递服务器,它给了我这个错误

 Error: ENOENT: no such file or directory, stat 'D:\views\index.html' 

我的代码是

 res.sendFile(__dirname + 'views/index.html'); 

当我捆绑webpack并运行捆绑文件,然后发生这种情况。 否则,如果我只是运行正常的app.js文件,它工作正常。 帮助将不胜感激。

这是因为webpack可以用不同的方式处理__dirname(和其他节点特定的东西)。 如果你希望它像正常的行为,使用你的webpackconfiguration:

 { node: { __dirname: false } } 

请参阅: https : //webpack.js.org/configuration/node/

__dirname被设置为/ webpack,这就是为什么最后是/views/index.html这是你的文件系统的根,这恰好是D:\在你的情况。 您可以在您的webpackconfiguration中将node.dirname设置为false ,以便不注入它并将其推迟到运行时。 请记住, __dirname将引用您正在执行的脚本的位置,这意味着该包的位置,而不是原始源。

 node: { __dirname: false }