节点绝对值不适用于webpack

时间:2015-11-07 15:31:14

标签: javascript node.js express webpack

我在我的服务器文件中使用了网络包,但是当我尝试使用没有网络包的__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'],
    }
  }
];

2 个答案:

答案 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