[英]__dirname is not working in node js with webpack bundling
我當前的目錄是
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(和其他節點特定的東西)。 如果您希望它像正常一樣運行,請在您的 webpack 配置中使用它:
{
node: {
__dirname: false
}
}
__dirname
被__dirname
設置為/
,這就是為什么你最終得到/views/index.html
這是你的文件系統的根目錄,在你的情況下恰好是D:\\
。 您可以在 webpack 配置中將node.dirname
設置為false
以不注入它並將其推遲到運行時。 請記住, __dirname
將引用您正在執行的腳本的位置,這意味着包的位置,而不是原始源。
node: {
__dirname: false
}
"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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.