我当前的目录是
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文件,它工作正常。帮助将不胜感激。
答案 0 :(得分:8)
这是因为webpack可以以不同的方式处理__dirname(以及其他特定于节点的事物)。如果您希望它的行为与正常情况一样,请在您的webpack配置中使用它:
{
node: {
__dirname: false
}
}
答案 1 :(得分:7)
webpack将__dirname
设置为/
,这就是为什么你最终得到/views/index.html
这个文件系统根源的原因,恰好是{{} 1}}在你的情况下。您可以在webpack配置中将D:\
设置为node.dirname
,以便不将其注入并将其推迟到运行时。请注意,false
将引用您正在执行的脚本的位置,这意味着捆绑包的位置,而不是原始来源。
__dirname
答案 2 :(得分:0)
"webpack": "^5.24.4"
默认值取决于 target
配置属性:
target: 'web'
=> __dirname = '/'
target: 'node'
=> __dirname = 'the full path of the output directory'
可以使用 node
配置属性进行调整,参见 https://webpack.js.org/configuration/node/#node__dirname