为什么webpack错误地将Javascript文件的本地路径解析为根路径?

时间:2019-12-15 06:54:30

标签: node.js webpack

我正在使用webpack 4.20.0 npm软件包。我在npm软件包mimer中的依赖项之一。 mimer的文件mime.types位于node_modules/mimer/lib/data/mime.types中。该软件包还具有文件node_modules/mimer/lib/exec.js,其中包含以下行:

list: (typeof process !== 'undefined' && process.cwd) ? require('./data/parser')(__dirname + '/data/mime.types') : $_MIMER_DATA_LIST

webpack成功编译了我的代码,我得到了一个包,但是当我用node.js运行该包时,出现此错误:

Error: ENOENT: no such file or directory, open '//data/mime.types'

我认为这是由于webpack通过将__dirname解析为根而错误地提供了__dirname值而导致的。有没有办法解决webpack中的此类问题?

这是我的webpack配置:

const path = require('path')
const webpack = require('webpack')


module.exports = {
  mode: 'development',
  target: 'node',
  context: path.resolve(__dirname),
  entry: path.resolve(__dirname, 'src', 'index.js'),
  resolve: {
    modules: [path.resolve(__dirname, './src'), 'node_modules'],
    extensions: ['.js', '.jsx', '.json'],
  },
  output: {
    filename: 'bundle.js',
    publicPath: path.resolve(__dirname, 'assets'),
    path: path.resolve(__dirname)
  },
  devtool: 'source-map',
  plugins: [
    new webpack.IgnorePlugin(/^(hiredis|transifex)$/)
  ],
  module: {
    rules: [
      {
        test: /\.js?$/,
        use: {
          loader: 'babel-loader',
          options: {
            rootMode: 'upward'
          }
        },
        include: [
          path.resolve(__dirname, 'src')
        ]
      }
    ]
  }
}

1 个答案:

答案 0 :(得分:2)

因此,基本上webpack返回__dirname/。因此,您基本上必须告诉webpack解决__dirname

添加:

node: {
    __dirname: true
}

__filename也一样。