Javascript __dirname在带有Web包绑定的节点js中不起作用
我当前的目录是Javascript __dirname在带有Web包绑定的节点js中不起作用,javascript,node.js,express,webpack,Javascript,Node.js,Express,Webpack,我当前的目录是 D:\bkp\Programming\TestWorks\nodejs\testApp 但是,当我使用\uuu dirname并试图使用express server显示文件时,会出现此错误 Error: ENOENT: no such file or directory, stat 'D:\views\index.html' 我的代码是 res.sendFile(__dirname + 'views/index.html'); 当我将其与webpack捆绑并运行捆绑文件时,
D:\bkp\Programming\TestWorks\nodejs\testApp
但是,当我使用\uuu dirname
并试图使用express server显示文件时,会出现此错误
Error: ENOENT: no such file or directory, stat 'D:\views\index.html'
我的代码是
res.sendFile(__dirname + 'views/index.html');
当我将其与webpack捆绑并运行捆绑文件时,就会发生这种情况。否则,如果我只运行普通的app.js文件,它就可以正常工作。非常感谢您的帮助。这是因为webpack可以以不同的方式处理dirname(以及其他特定于节点的内容)。如果您想让它像正常一样运行,请在您的网页配置中使用此选项:
{
node: {
__dirname: false
}
}
请参阅:webpack将
\uu dirname
设置为/
,这就是为什么您最终会得到/views/index.html
,它是文件系统的根,在您的情况下正好是D:\
。您可以在网页包配置中将node.dirname
设置为false
,以不注入它并将其延迟到运行时。请记住,\uuu dirname
将引用您正在执行的脚本的位置,这意味着捆绑包的位置,而不是原始源
node: {
__dirname: false
}
“网页包”:“^5.24.4”
默认值取决于目标
配置属性:
target:'web'
=>\uu dirname='/'
target:'node'
=>\uu dirname='output目录的完整路径'
它可以使用
节点
配置属性进行调整,请参见一些google客户端lib要求在webpack.config中将dirname设置为true。但是对于从文件系统读取邮件模板,我希望dirname是输出dir。是否有办法仅为某些节点模块设置?我的cur解决方法是使用process.cwd()然后使用/dist作为输出目录。但我真的不喜欢这样