首页 > 解决方案 > 找不到模块

问题描述

我在同一个文件夹中有两个简短的测试文件,如下所示:

pi:~$ cat module.js
export let message = "Hello world";

pi:~$ cat index.js
import { message } from "./module"
console.log(message);

pi:~$ node -v
v14.12.0

pi:~$ pwd
/home/pi

"type": "module"在 package.json 中。然后我尝试运行node ./index.js,并得到:

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/pi/module' imported from /home/pi/index.js
Did you mean to import ../module.js?
    at finalizeResolution (internal/modules/esm/resolve.js:276:11)
    at moduleResolve (internal/modules/esm/resolve.js:673:10)
    at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:784:11)
    at Loader.resolve (internal/modules/esm/loader.js:85:40)
    at Loader.getModuleJob (internal/modules/esm/loader.js:229:28)
    at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:51:40)
    at link (internal/modules/esm/module_job.js:50:36) {
  code: 'ERR_MODULE_NOT_FOUND'

我做错了什么?语法:import { message } from "./module"不正确吗?

标签: node.jsecmascript-6es6-modules

解决方案


您需要在import语句中指定文件扩展名

import { message } from "./module.js"

Nodejs Docs - Differences between ES modules and CommonJS:

强制文件扩展名

使用 import 关键字时必须提供文件扩展名。目录索引(例如'./startup/index.js')也必须完全指定


推荐阅读