JavaScript中import路径必须为相对(./或../)、绝对(/)或URL形式,需带扩展名(如.js),浏览器须用type="module",Node.js需"type":"module"或.mjs后缀。

在 JavaScript 中用 import 导入指定路径的工具模块,关键在于路径写法要符合 ES 模块规范,并确保运行环境支持模块系统(如现代浏览器、Node.js 12+ 且启用 "type": "module")。
路径必须是相对路径或绝对路径(不能省略 ./ 或 /)
ES 模块要求显式声明路径类型。即使模块在同一目录下,也不能直接写模块名,必须加 ./ 前缀:
- ✅ 正确:
import { formatDate } from './utils/date.js'; - ✅ 正确:
import { debounce } from '../helpers/fn.js'; - ✅ 正确(Node.js 中支持扩展名省略,但推荐保留):
import { throttle } from './utils/index.js'; - ❌ 错误:
import { log } from 'utils/log';(这不是内置模块,也没有配置包映射,会报错)
文件扩展名通常不能省略(尤其在浏览器中)
浏览器原生 ES 模块强制要求带扩展名(如 .js),否则会 404;Node.js 在启用 ESM 后也默认要求(除非用 exports 字段配置了自动解析):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 浏览器中必须写:
import { uuid } from './lib/uuid.js'; - Node.js 中若不写扩展名,且没有
package.json的"exports"映射,会报ERR_MODULE_NOT_FOUND - 小技巧:可统一用
.js,兼容性最好
支持的路径形式总结
合法路径包括以下三类:
立即学习“Java免费学习笔记(深入)”;
-
相对路径:以
./或../开头,例如import { deepClone } from '../shared/clone.js'; -
绝对路径(从根开始):以
/开头(仅限浏览器中指向网站根目录,如/src/utils/api.js);Node.js 不支持这种写法 -
URL(浏览器专属):如
import { marked } from 'https://cdn.skypack.dev/marked@latest';,直接导入 CDN 上的 ESM 兼容包
常见问题提醒
遇到报错时优先检查这几项:
- HTML 中是否用
<script type="module">加载?普通<script>不识别import - Node.js 项目是否在
package.json中设置了"type": "module"?否则要用.mjs后缀或命令行加--input-type=module - 路径是否拼写正确?大小写敏感(尤其在 Linux/macOS 系统或服务器上)
- 是否误用了 CommonJS 的
require()写法?import和require不能混用(不同模块系统)

















