最近自己写了一个 npm 包,在 package.json 下面有如下代码:
{
"main": "./dist/index.common.js",
"module": "./dist/index.esm.js",
"types": "./dist/index.d.ts",
}
按照我的理解,在 esm 中用 import 导入应该导入的是 module 字段指向的 js ,但是我建了一个 npm 项目,代码如下:
import a from "my-utils";
执行命令: node index.mjs
导入的却是 main 指向的 js 文件。
1
mxT52CRuqR6o5 2022-07-27 16:02:22 +08:00 via Android
好奇怪哦,node 版本是 12 以上吗
|
2
hua123s 2022-07-27 16:18:47 +08:00
https://docs.npmjs.com/cli/v8/configuring-npm/package-json#main 好像是没有 module 这个属性的,都是打包工具才认。
|
3
liliclinton 2022-07-27 16:25:01 +08:00
需要在 package.json 中声明"type": "module"
|
4
liliclinton 2022-07-27 16:31:21 +08:00
|
5
zficode OP @liliclinton 但是我在 npm 包里面加上了 type: module 的时候,使用 require 会报错
|
6
zficode OP 目前我改成了这样子, @hua123s @liliclinton @mxT52CRuqR6o5
```json { "main": "./dist/index.common.cjs", "module": "./dist/index.esm.mjs", "types": "./dist/index.d.ts", "exports": { "import": "./dist/index.esm.mjs", "require": "./dist/index.common.cjs" }, } ``` |
7
liliclinton 2022-07-27 17:33:20 +08:00
@zficode 那确实是不允许的
|