Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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
Ecmascript 6 使用Web包和系统的未解析节点模块依赖关系_Ecmascript 6_Webpack_Babeljs_Systemjs - Fatal编程技术网

Ecmascript 6 使用Web包和系统的未解析节点模块依赖关系

Ecmascript 6 使用Web包和系统的未解析节点模块依赖关系,ecmascript-6,webpack,babeljs,systemjs,Ecmascript 6,Webpack,Babeljs,Systemjs,我的代码中有以下ES6导入,用于从节点\u模块文件夹导入项目依赖项: import React from 'react'; 通过使用此网页包配置,一切正常: { module: { loaders: [ { loader: 'babel', test: /(\.js|\.jsx)/, exclude: /(node_modules|bower_components)/ } ] } } 我最终得到一

我的代码中有以下ES6导入,用于从
节点\u模块
文件夹导入项目依赖项:

import React from 'react';
通过使用此网页包配置,一切正常:

{
  module: {
    loaders: [
      {
        loader: 'babel',
        test: /(\.js|\.jsx)/,
        exclude: /(node_modules|bower_components)/
      }
    ]
  }
}
我最终得到一个捆绑文件,其中包含已自动添加的react依赖项

但如果我将babel配置为使用
模块:“system”
将导入输出为
system.register

{
  module: {
    loaders: [
      {
        loader: 'babel',
        test: /(\.js|\.jsx)/,
        exclude: /(node_modules|bower_components)/,
        query: {
          modules: 'system',
          moduleIds: true,
          keepModuleIdExtensions: true
        }
      }
    ]
  }
}
然后绑定的文件不再包含react依赖项,我必须在浏览webpack后将
systemjs
库附加到编译后的文件中

我们应该如何使用
webpack
处理此配置?为什么
webpack
不能像编译到
commonjs
时那样使用
system
绑定react依赖项


PS:我特别要求使用
webpack
,而不是
systemjsbuilder
jspm

来实现这一点,这不是webpack的工作方式。Webpack可以处理AMD和CommonJS模块,但不能处理SystemJS模块


对于支持模块系统的Webpack,它需要能够查看JS并静态地决定哪些文件取决于什么,然后修改该文件,使其能够工作并与其他模块兼容。它现在不知道SystemJS是什么,所以它看到的只是一个JS文件,它不引用任何公共JS模块,因为它从不使用
require()

,我从技术上理解为什么会发生这种情况。但如果系统应该成为下一个标准,我会认为Webpack可以扩展其系统支持(即使它是一个额外的配置),这样,如果导入未定义,它会像commonjs一样出现在
节点_模块中……这将是一个要问Webpack维护者的问题。这个系统还是相当新的。也有一段时间“Webpack2.x”正在制作中。也许这会支持它
SystemJS
基于一个仍在不断变化的规范。说“这将是下一个规范”假设规范还没有开发出来,事实就是这样。如果你使用的是webpack,那么除了ES6->CommonJS之外,使用模块系统并没有什么好处。Webpack2将支持标准ES6模块,所以您只需要完全禁用Babel中的模块传输。