Webpack 2:无法解析模块
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 的预期一样有效,但 myModule 模块未通过 webpack 2 解析,我得到 "Module not found: can't resolve 'module' in ... \app"。
似乎忽略了 modulesDirectories 条目,基础 URL 对应于条目的文件夹。
我该怎么做才能使模块使用 webpack 2 正确解析?
编辑:正如其他人所指出的,对于 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 的错误。
来自: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'
}
我有这样一个项目:
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 的预期一样有效,但 myModule 模块未通过 webpack 2 解析,我得到 "Module not found: can't resolve 'module' in ... \app"。
似乎忽略了 modulesDirectories 条目,基础 URL 对应于条目的文件夹。
我该怎么做才能使模块使用 webpack 2 正确解析?
编辑:正如其他人所指出的,对于 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 的错误。
来自: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'
}