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 Webpack 2.0检查是否存在摇晃的ES6模块导入_Ecmascript 6_Webpack_Es6 Module Loader - Fatal编程技术网

Ecmascript 6 Webpack 2.0检查是否存在摇晃的ES6模块导入

Ecmascript 6 Webpack 2.0检查是否存在摇晃的ES6模块导入,ecmascript-6,webpack,es6-module-loader,Ecmascript 6,Webpack,Es6 Module Loader,在Webpack2.0(@2.1.0-beta6)中,如果我要导入一个指向不存在的文件的文件,我会得到一个构建时错误 //x.js import { foo } from './y' //y.js export function foo () { return 5 } //x.js import { baz } from './y' //y.js export function foo () { return 5 } 如果从存在的文件导入不存在的导出,则会出现运行时错误 //x.js i

在Webpack2.0(@2.1.0-beta6)中,如果我要导入一个指向不存在的文件的文件,我会得到一个构建时错误

//x.js
import { foo } from './y'

//y.js
export function foo () { return 5 }
//x.js
import { baz } from './y'

//y.js
export function foo () { return 5 }
如果从存在的文件导入不存在的导出,则会出现运行时错误

//x.js
import { foo } from './y'

//y.js
export function foo () { return 5 }
//x.js
import { baz } from './y'

//y.js
export function foo () { return 5 }
有没有一种方法可以让Webpack检查以与解析文件相同的方式导出文件

//webpack.config.js
module.exports = {
  module: {
    loaders: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: 'babel-loader',
        query: {
          presets: ['es2015-native-modules']
        }
    ],
  }
}

我相信在这种情况下,运行时错误是正确的行为。您可能不会从导入本身获得运行时错误,但只有在尝试使用它时,它才是未定义的

在构建期间,通过系统调用可以轻松确定文件是否存在。然而,导出给定值或不导出给定值的模块可以在运行时更改—这不是一个好主意—因此Webpack不会在构建时决定是否应该退出

考虑以下代码:

// hats.js
var hats = undefined;
if (Math.random() > 0.5) {
  hats = 'i have a hat!';
}
export const HATS = hats;
// index.js
import { HATS } from './hats';
console.log('hats is:', HATS}

Webpack在构建时无法知道HATS在运行时是否存在,所以在我尝试导入HATS时不会出错。但是,HATS将正确地表示为未定义或“我有一顶帽子!”在执行期间记录时。类似地,如果我从hats.js中删除导出行,它将始终报告未定义,因为Webpack在传输后无法分辨差异-hats仍然是未定义的。如果我完全删除了hats.js,Webpack就会知道肯定有什么地方出错了。

截至
webpack@2.1-beta15
,用于ES6导出的导入。

值得将
webpack config
文件内容粘贴到此处。请尝试
export default module.exports={/*code*/}
@Venky这不正是与
module.exports={/*code*/}
相同的吗?你也失去了用CommonJS摇树的能力webpack@2至少,在模块解析中不涉及任何透明。