使用Webpack的上下文和条目时无法解析模块

时间:2018-10-03 20:28:00

标签: javascript webpack

使用context and the entry object时,Webpack不会解析任何模块。这似乎很奇怪,因为Webpack似乎正在正确目录中寻找文件,但无法解析它们。

const path = require('path');

const PATHS = {
  app: path.resolve(__dirname, 'app'),
};

module.exports = {
  context: PATHS.app,
  entry: {
    app: 'app.js',
  },
  module: {
    rules: [
      {
        resolve: {
          extensions: ['.js']
        }
      }
    ],
  },
};

我的app.js文件位于/absolute/path/to/app

运行Webpack时会引发以下错误:

ERROR in Entry module not found: Error: Can't resolve 'app.js' in '/absolute/path/to/app'

解决方法是完全删除context值,并将entry对象修改为:

  entry: {
    app: PATHS.app + '/app',
  },

同时使用contextentry时是否缺少某些东西?

1 个答案:

答案 0 :(得分:1)

Webpack和Node在文件名或其他路径之前使用经典的./表示法处理相对路径。在其他环境中,没有./的相对路径是绝对正确的,但这是必需的。请注意,设置context不会以任何方式影响此设置。结果仍然是相同的。因此,您的输入应如下所示:

entry: {
  app: './app.js'
},

不幸的是,目前尚无官方文档专门讨论此问题,但是Webpack的documentation on entry points仅使用包含./表示法的示例。