import过来exports的内容 为什么是undefined

a.js

const typeList = [
    {a:1}, 
    {b:2}, 
    {c:3}
]

exports = {typeList}

b.js

import { typeList } from './a'
console.log(typeList) // =====> 显示undefined,为什么?
阅读 6.6k
4 个回答

前面几位说的是让你怎么改,但是没告诉为什么,我来解释下。

exports是一个引用变量,它其实是module.exports的一个简写。

如果你对外暴漏变量,你这么写没问题:

exports.something = ref;

但是如果你做了替换:

exports = {...};

你要知道,node内部对外引用的是modle.exports,你改变的只是一个局部引用,而不是真实的引用,这个涉及脚本的对象引用规则,简单来说,大概是这样:

var module = {exports: [1,2,3]};
var exports = module.exports;
console.log(module.exports === exports);

// if you do:
exports = {...};

// but you know...
console.log(module.exports);

所以其实如果你再勤快点,改写成下面这样就OK了:

module.exports = {...};

PS: exports是es5的语法,export是es6的语法,楼上很多人弄混了。

应该是你用错了
exprots = {typeList} 这是cmd 实现模块化的方式, node 是这么用的

import 是es6 定义的规范,

改成

export const typeList = [
    {a:1}, 
    {b:2}, 
    {c:3}
]

即可

exports = {typeList}

去掉 =

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题