Javascript 为什么网页包可以';找不到装载机
这是我的pacjage.json:Javascript 为什么网页包可以';找不到装载机,javascript,node.js,unix,npm,webpack,Javascript,Node.js,Unix,Npm,Webpack,这是我的pacjage.json: { "name": "redux-todo", "version": "1.0.0", "description": "", "main": "app.js", "scripts": { "start": "webpack-dev-server" }, "devDependencies": { "babel": "^6.5.2", "babel-loader": "^6.2.5", "babel-p
{
"name": "redux-todo",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"start": "webpack-dev-server"
},
"devDependencies": {
"babel": "^6.5.2",
"babel-loader": "^6.2.5",
"babel-preset-es2015": "^6.13.2",
"babel-preset-react": "^6.11.1",
"webpack": "^1.13.2"
},
"dependencies": {
"react": "^15.3.1",
"react-dom": "^15.3.1",
"react-redux": "^4.4.5",
"redux": "^3.5.2"
}
}
webpack.config.js:
var path = require('path');
module.exports = {
entry: './index.js',
output: {
path: './',
filename: 'app.js'
},
devServer: {
inline: true,
port: 3334
},
resolveLoader: { root: path.join(__dirname, "node_modules") },
module: {
loaders: [
{
test: /\.js$/,
exclude: '/node_modules',
loader: 'babel',
query: {
presets: ['es2015', 'react']
}
}
]
}
};
我有以下项目目录结构:
├── actions.js
├── components
├── containers
├── index.js
├── node_modules
├── package.json
├── reducers.js
├── test.js
└── webpack.config.js
项目目录的绝对路径是/home/dmitry/WebstormProjects/Redux-todo
那么,为什么我运行npm start
时会出现错误:
(webpack)/~/process/browser.js中出错
模块构建失败:错误:找不到与目录“/usr/local/lib/node_modules/webpack/node_modules/process”相关的预设“es2015”
这个/usr/local/lib/node_modules/webpack/node_modules/process
路径是什么?为什么它说它相对于它进行搜索
用谷歌搜索这个错误,我发现
重要提示:此处的加载程序是相对于应用它们的资源进行解析的。这意味着它们不会相对于配置文件进行解析。如果您从npm安装了加载程序,并且您的node_modules文件夹不在所有源文件的父文件夹中,则webpack无法找到加载程序。您需要将node_modules文件夹作为绝对路径添加到resolveLoader.root选项。(resolveLoader:{root:path.join(uu dirname,“node_modules”)}
应该修复它,但正如您所看到的,我在配置中有它,但仍然看到这个错误
我在ubuntu 16.04 LTS上,nodejs版本是4.2.6,npm 3.5.2您只将
/node\u模块作为绝对路径排除在外:
exclude: '/node_modules'
如果要递归排除所有节点\u模块
请尝试使用:
exclude: /node_modules/
区别很小,但前者使用的字符串具有指向根节点\单元
的绝对路径,后者使用的正则表达式匹配任何路径与节点\单元
这在没有resolveLoader
配置的情况下应该可以工作。因此,您可以删除此字段:
resolveLoader: { root: path.join(__dirname, "node_modules") },
实际上,我删除了node_模块,稍微调整了package.json:
{
"name": "redux-todo",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"start": "webpack-dev-server"
},
"dependencies": {
"babel": "^6.5.2",
"react": "^15.3.1",
"react-dom": "^15.3.1",
"react-redux": "^4.4.5",
"redux": "^3.5.2"
},
"devDependencies": {
"babel-core": "^6.13.2",
"babel-loader": "^6.2.5",
"babel-preset-es2015": "^6.13.2",
"babel-preset-react": "^6.11.1",
"webpack": "^1.13.2",
"webpack-dev-server": "^1.14.1"
}
}
啊,它成功了。不知道为什么。以下是网页包配置现在的样子:
var path = require('path');
module.exports = {
entry: './index.js',
output: {
path: './',
filename: 'app.js'
},
devServer: {
inline: true,
port: 3334
},
module: {
loaders: [
{
test: /\.js$/,
exclude: '/node_modules',
loader: 'babel',
query: {
presets: ['es2015', 'react']
}
}
]
}
};
我不知道那是怎么回事_(ツ)_/“对于我的项目,加载程序的配置如下:
{
test: /\.js$/,
exclude: '/node_modules',
loader: "babel-loader"
}
而.babelrc
文件包含以下内容:
{
"presets": ["es2015","react"]
}
查看您发布的第一个Web包配置,我注意到选项resolveLoader:{root:path.join(\uu dirname,“node\u modules”)}
。如果所有加载程序都位于正确的路径上(node\u modules
项目根目录),则不需要此选项.您是否打算使用babel loader
?如果是,并且如果node\u模块中没有babel loader
文件夹,则npm安装babel-loader@7.1.1--save dev
应修复此问题并生成该文件夹。在父目录中有任何.babelrc文件吗?没有,没有。babelrcI不知道如何排除uding node modules与Web包无法解析预设相关-正如您在最终版本的config中所看到的,我在node_modules之后仍然没有尾随斜杠,但它仍然有效。因为/usr/local/lib/node_modules/webpack/node_modules/process
未被排除在外。它不在您的项目文件夹中(在您的项目中node\u modules
)。它可能是全局安装的。您的babel加载程序甚至不应该处理这些文件:)。我更喜欢使用include
而不是exclude
。它更明确,更不容易出错。