我在我的服务器文件中使用了网络包,但是当我尝试使用没有网络包的__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'],
}
}
];
答案 0 :(得分:1)
Webpack使用它自己的模块来处理__dirname
,默认配置是mock
,这意味着“/“
。这就是为什么你没有获得绝对的道路。
Ref: api in modules # __dirname
(我只能回答你Why does this happen?
我像你一样得到同样的问题,但仍然找到解决方案,有人可以给出一些暗示吗? ;))
答案 1 :(得分:0)
你可以用这个:
http://webpack.github.io/docs/configuration.html#node
设置节点__dirname