[英]Webpack 2: cannot resolve module
我有一個這樣的項目:
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';
這與webpack 1.x一樣正常工作,但是我沒有用webpack 2解析myModule模塊,我得到“找不到模塊:無法在... \\ app中解析模塊”。
看來modulesDirectories條目被忽略,基本URL對應於條目的文件夾。
如何使用webpack 2正確解析模塊?
來自: http : //moduscreate.com/webpack-2-tree-shaking-configuration/
在Webpack 2中, root
, modulesDirectories
和fallback
設置的解析器將合並為一個屬性 - modules
。 以下是我們如何在Webpack 2中解析文件和模塊位置:
resolve: {
modules: [
path.resolve('./client'),
'node_modules'
]
},
您可以在modules
指定多個目錄,但請確保不要忘記node_modules
或npm包依賴項將無法加載。
那么就你的情況而言:
resolve: {
modulesDirectories: ['core']
}
現在需要
resolve: {
modules: ['core'] // also 'node_modules'
}
編輯:正如其他人所說,對於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')]
};
感謝克里斯托弗戴維斯,我通過添加:
resolveLoader: {
root: path.join(__dirname, 'node_modules')
},
resolve: {
root: ['./core']
}
我不得不添加resolveLoader行,否則我收到有關無法加載的babel-loader的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.