我在我的服务器文件中使用 web pack,但是当我尝试在没有 web pack 的情况下使用 __dirname 时,它通常像“/Users/user_name/Desktop/project_name”一样工作,但是当在执行以下操作时通过 webpack 运行构建的文件时登录 __dirname 它返回简单的“/”。为什么会出现这种情况?
目录如下:
/node_modules
/src
--/cloud
----/main.js
--/static
----/markups
------/index.html
----/scripts
------/index.js
----/bundles
/package.json
/webpack.config.js
配置文件为
var path = require('path');
var fs = require('fs');
var nodeModules = {};
fs.readdirSync('node_modules')
.filter(function (x) {
return ['.bin'].indexOf(x) === -1;
})
.forEach(function (mod) {
nodeModules[mod] = 'commonjs ' + mod;
});
module.exports = [
{
name: 'server',
target: 'node',
context: path.join(__dirname, 'src', 'cloud'),
entry: './main.js',
output: {
path: path.join(__dirname),
filename: 'server.js'
},
externals: nodeModules,
module: {
loaders: [
{test: /\.js$/, exclude: /node_modules/, loaders: ['babel-loader?presets[]=es2015']}
]
},
resolve: {
root: path.join(__dirname),
fallback: path.join(__dirname, 'node_modules'),
modulesDirectories: ['node_modules'],
}
},
{
name: 'client',
context: path.join(__dirname, 'src', 'static'),
entry: {
index: './scripts/index.js'
},
output: {
path: path.join(__dirname, 'src', 'static', 'bundles'),
filename: '[name].js'
},
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel',
query: {
presets: ['es2015', 'stage-0']
}
}
]
},
resolve: {
root: path.join(__dirname),
fallback: path.join(__dirname, 'node_modules'),
modulesDirectories: ['node_modules'],
}
}
];
最佳答案
Webpack使用它自己的模块来处理__dirname
,默认配置是mock
,这意味着“/”
。这就是为什么你没有得到绝对路径。
Ref: api in modules # __dirname
(我只能回答你为什么会发生这种情况?
我遇到了和你一样的问题,但仍在找到解决方案,有人可以给一些提示吗? ;) )
关于javascript - Node 绝对值不适用于 webpack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33584434/