簡體   English   中英

__dirname 在帶有 webpack 捆綁的節點 js 中不起作用

[英]__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
    }
}

請參閱: https : //webpack.js.org/configuration/node/

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM