「Node.js」一个 export/import 问题

吐槽/反馈/建议:我的咸鱼心  爱发电-@wdssmq  FeedsPub-wdssmq

前言

折腾,遇到问题,解决,水一篇,周而复始……

然而昨天久违的看了下百度统计,日 IP 已经掉到 20 了……

话说之前也遇到个类似的问题:

「大坑」关于 module 模式下如何正确引入 WebSocketServer_电脑网络_沉冰浮水

正文

以下为去 v2ex 提问时的原始内容;

项目本身使用 rollup 构建,然后功能上是一个 rollup-plugin,一开始只导出了一个函数 monkey,后边加了功能,结果就是拿到的东西不统一了。

虽然可以先判断一下,然而还是想弄清为什么会有这种差异……

export { main as default, monkeyPath, monkeyRequire };
// for test
import monkey, { monkeyPath, monkeyRequire } from "../../dist/index.mjs";

console.log("typeof monkey:", typeof monkey);
// typeof monkey: function
// for prod
import monkey, { monkeyPath, monkeyRequire } from "rollup-plugin-monkey";

console.log("typeof monkey:", typeof monkey);
// typeof monkey: object
console.log("typeof monkey.default:", typeof monkey.default);
// typeof monkey.default: function

项目源码:
https://github.com/wdssmq/rollup-plugin-monkey

这里可以看到 dist/ 内容:
https://www.npmjs.com/package/rollup-plugin-monkey?activeTab=explore

最终项目使用的配置文件:
https://github.com/wdssmq/rollup-plugin-monkey/blob/main/test/gm/rollup.config.mjs

v 友指出实际引用应该是 cjs,exports["default"] = main,会得到一个object类型的导出;

删除 prod 内对应的 cjs 后变成找不到文件了,是有 mjs 的,然后 pkg 内有如下配置:

  "main": "dist/index.cjs",
  "module": "dist/index.mjs",
  "type": "module",

看来我理解有误,以为使用 module 语法就会使用对应字段的路径?

好像应该按下边的写,虽然并没有测试过 require:

  "main": "dist/index.mjs",
  "exports": {
    "import": "./dist/index.mjs",
    "require": "./dist/index.cjs"
  },
  "type": "module",

补充

只导出 default 时的代码:

// msj
export { main as default };

// cjs
exports["default"] = main;

有额外导出时的代码:

// msj
export { main as default, monkeyPath, monkeyRequire };

// cjs
exports["default"] = main;
exports.monkeyPath = monkeyPath;
exports.monkeyRequire = monkeyRequire;

参考

Node.js 如何处理 ES6 模块 - 阮一峰的网络日志

https://www.ruanyifeng.com/blog/2020/08/how-nodejs-use-es6-module.html


爱发电

本文标题:《「Node.js」一个 export/import 问题》作者:沉冰浮水
原文链接:https://www.wdssmq.com/post/20100204145.html
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

网站分类

搜索

本周旧文

《恶魔娃娃》

- 他们正研究你究竟是真正的大人,还是伪装成大人的小孩

- 我自己都研究很久了

乐高 DC 里,(基本就蝙蝠侠家,,年龄最小的那个无论是谁感觉人设都会变得一样 - -

所以,就感觉和祥林嫂一样,每天都需要向外「签到」自己的情绪感受,然而又并没有什么「需要」我这样的签到……

只要梦里出现学校的概念,形式和反抗好像也都不重要了,,天还没亮,骑自行车去上学,没走多远「想起来」并不需要上学的,下来搬起车原地调头然后推回家。。

《K 星异客》里,「青鸟」真的是等来的,或者说是突然出现然后引发改变的外部因素。。。

梦的最后也是又一次意识到教室里的同学只是幻境中的投影,被困住的只有我;虽然也终于总结出,在梦里从来没有和同学的投影有过冲突和争执,甚至还附和我反驳「管理者」身份被进一步放大并不特指某一个人的老师。。

就和大脑会突然播放某一首歌一样,「讨厌自己」这句话也是自己突然就会播放一次,然后频率更高。。

学校,学校,学校,总是梦到学校,,就好像灵魂被诅咒禁固一样。。

拟造轻小说标题:《爱上网冲浪的山本同学总是滥用讨人嫌的罗马音缩写这件事》,简称《山本罗马音》

英文是一种语言的「文字」,所以英文缩写也是「文字的缩写」;对应到中文也应该是对「文字」进行缩写,而不是「读音的符号化表示的缩写」;这也是为什么反对用拼音当变量名,拼音只是将中文这一语言的「读音」图形化表达的工具,我们直接使用的是语言的「文字」和「读音」;

——甚至标准的拼音应该带上声调……

爱发电支持者

最新留言

友情链接

  • 订阅本站的 RSS 2.0 新闻聚合
召唤伊斯特瓦尔