web-dev-qa-db-ja.com

Webpack 2:モジュールを解決できません

私はこのようなプロジェクトを持っています:

root/
    webpack-config.js
    app/
       app.js
       js/
         dep.js
    core/
        module.js

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']
    }
    ...

app.jsには、次のものがあります。

import local_dep from './js/dep';
import myModule from 'module';

これはwebpack1.xで期待どおりに機能しますが、myModuleモジュールがwebpack 2で解決されないため、「モジュールが見つかりません:...\appで 'モジュール'を解決できません」というメッセージが表示されます。

ModulesDirectoriesエントリは無視され、ベースURLはエントリのフォルダに対応しているようです。

Webpack 2でモジュールを正しく解決するにはどうすればよいですか?

8
warpdesign

編集:他の人が指摘しているように、Webpack 2の場合、次のように機能します。

{
  resolve: {
    extensions: ['.js', '.jsx'],
    modules: ['node_modules', path.resolve(__dirname, 'core')]
  },
}

Webpack 1の場合、次のエントリを持つセットアップがあります。

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

  root: [path.resolve('./core')]
};
4

差出人: http://moduscreate.com/webpack-2-tree-shaking-configuration/

Webpack 2では、rootmodulesDirectories、およびfallback設定のリゾルバーは、単一のプロパティmodulesにマージされます。 Webpack2でファイルとモジュールの場所を解決する方法は次のとおりです。

  resolve: {
    modules: [
      path.resolve('./client'),
      'node_modules'
    ]
  },

modulesでディレクトリの数を指定できますが、node_modulesを忘れないようにしてください。そうしないと、npmパッケージの依存関係の読み込みに失敗します。


だからあなたの場合、以前は何でしたか:

resolve: {
  modulesDirectories: ['core']
}

今はする必要があります

resolve: {
  modules: ['core'] // also 'node_modules' 
}
12
laggingreflex