Webpack 2:无法解析模块

war*_*ign 8 javascript webpack webpack-2

我有一个这样的项目:

root/
    webpack-config.js
    app/
       app.js
       js/
         dep.js
    core/
        module.js
Run Code Online (Sandbox Code Playgroud)

这是webpack配置文件:

module.exports = {
    entry: './app/app.js',
    output: {
        path: __dirname,
        filename: "[name]-bundle.js"
    },
    module: {
        loaders: [
            { test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/     }          
        ]
    },
    resolve: {
      modulesDirectories: ['core']
    }
    ...
Run Code Online (Sandbox Code Playgroud)

在app.js中,我有:

import local_dep from './js/dep';
import myModule from 'module';
Run Code Online (Sandbox Code Playgroud)

这与webpack 1.x一样正常工作,但是我没有使用webpack 2来解析myModule模块,我得到"找不到模块:无法在...\app中解析模块".

看来modulesDirectories条目被忽略,基本URL对应于条目的文件夹.

如何使用webpack 2正确解析模块?

lag*_*lex 12

来自:http://moduscreate.com/webpack-2-tree-shaking-configuration/

在Webpack 2中,来自root,modulesDirectoriesfallback设置的解析器将合并为一个属性 - modules.以下是我们如何在Webpack 2中解析文件和模块位置:

  resolve: {
    modules: [
      path.resolve('./client'),
      'node_modules'
    ]
  },
Run Code Online (Sandbox Code Playgroud)

您可以指定多个目录modules,但请确保不要忘记node_modules或npm包依赖项将无法加载.


那么就你的情况而言:

resolve: {
  modulesDirectories: ['core']
}
Run Code Online (Sandbox Code Playgroud)

现在需要

resolve: {
  modules: ['core'] // also 'node_modules' 
}
Run Code Online (Sandbox Code Playgroud)


Chr*_*ies 5

编辑:正如其他人指出的那样,对于Webpack 2来说,类似这样的方法可以工作:

{
  resolve: {
    extensions: ['.js', '.jsx'],
    modules: ['node_modules', path.resolve(__dirname, 'core')]
  },
}
Run Code Online (Sandbox Code Playgroud)

对于Webpack 1,我有一个具有以下条目的设置:

config.resolve = {
  // Allows us to include js and jsx files without specifying the extension
  extensions: ['', '.jsx', '.js'],

  root: [path.resolve('./core')]
};
Run Code Online (Sandbox Code Playgroud)