javascript - Node 绝对值不适用于 webpack

标签 javascript node.js express webpack

我在我的服务器文件中使用 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/

相关文章:

node.js - 即使配置了express.static,express.js也无法访问静态文件

node.js - 使用nodejs将otp发送到所需的手机号码

javascript - 来自数组的随机 Vimeo 视频

javascript - 模板仅在刷新页面后呈现

javascript - 使用 Bootstrap 如何使用关闭按钮显示输入中的 div 列表中选定的 div

javascript - Typescript 未按一致的顺序编译类

javascript - 查找过去 7 天当天的最后一份文件

javascript - 500 语法错误 : Unexpected token (41:5) while using simple jade file

node.js - Angular 兼容项目的对等依赖关系?

mongodb - 使用 Node.js 和 MongoDB 同步数据库访问