__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 }