首页 文章

从转换的ES6代码导入时获取空对象[重复]

提问于
浏览
0

这个问题在这里已有答案:

源代码是用ES6编写的,并使用babel和webpack转换为ES5,它看起来像这样:

src/2.js

export default {
   ...
}

src/1.js

import 2 from './2.js'
export default {
    ...
}

1.js 是webpack的主要入口脚本 . 这是webpack配置:

var webpack = require('webpack');
var path = require('path');

module.exports = {
  'entry': './src/1.js',
  'module': {
    'loaders': [{
      'test': /\.js$/,
      'exclude': /node_modules/,
      'loader': 'react-hot-loader/webpack'
    }, {
      'test': /\.js$/,
      'exclude': /node_modules/,
      'loader': 'babel-loader'
    }]
  },
  'output': {
    'path': path.resolve(__dirname, './dist'),
    'publicPath': '/',
    'filename': 'index.js'
  }
}

然后将ES5转换文件 index.js 作为npm模块发布,比如'example_module' .

现在,当我这样做时,在另一个应用程序中:

import exampleModule from `example-module`;
console.log(exampleModule)  // <-- empty object

尝试导入模块时,我得到一个空对象 .

我似乎理解(不确定)转换文件是在本机ES5环境中的脚本标记内使用,不能在ES6代码中导入 .

问题是,我应该如何调整构建过程,以便模块可以在ES5和ES6环境中使用?

1 回答

  • 0

    当你 import exampleModule from 'example-module'; 它默认在 different-app 项目的 node_modules/ 文件夹中查找 .

    你有两种可能性:

    • 使用webpack和aliases告诉webpack从另一个绝对文件夹中获取 example-module .

    • example-module 与您最喜爱的包管理器(yarn / npm)链接到 node_modules 文件夹 .

    我个人会选择#2 .

相关问题