问题
My current directory is
D:\bkp\Programming\TestWorks\nodejs\testApp
but when i am using __dirname
and trying to show a file with express server it gives me this error
Error: ENOENT: no such file or directory, stat 'D:\views\index.html'
my code for that is
res.sendFile(__dirname + 'views/index.html');
when i am bundling it with webpack and run the bundle file then this happens. Otherwise if i just run the normal app.js file it works fine. Help would be appreciated.
回答1:
This is because webpack can handle __dirname (and other node specific things) in different ways. If you want it to behave like normal, use this in your webpack config:
{
node: {
__dirname: false
}
}
See: https://webpack.js.org/configuration/node/
回答2:
The __dirname
is set to /
by webpack, that's why you end up with /views/index.html
which is the root of your file system, that happens to be D:\
in your case. You can set node.dirname
to false
in your webpack config to not inject it and defer it to runtime. Keep in mind that __dirname
will refer to the location of the script you're executing, that means the location of the bundle, not the original source.
node: {
__dirname: false
}
来源:https://stackoverflow.com/questions/43527016/dirname-is-not-working-in-node-js-with-webpack-bundling