Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么网页包可以';找不到装载机_Javascript_Node.js_Unix_Npm_Webpack - Fatal编程技术网

Javascript 为什么网页包可以';找不到装载机

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

这是我的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-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
。它更明确,更不容易出错。