nodejs import 报错
当在使用 Node.js 时,如果遇到 import
报错,通常是因为 Node.js 默认支持的是 CommonJS 模块系统,而 import
是 ES Module 的语法。要解决这个问题,最直接的方式是确保文件以 .mjs
结尾,或者在 package.json
文件中设置 "type": "module"
。
下面将几种解决方法,并提供示例代码。
1. 确保文件类型正确
Node.js 支持两种模块格式:CommonJS 和 ES Module。默认情况下,.js
文件会被当作 CommonJS 模块处理。如果你希望使用 ES Module 的 import
语法,可以将文件后缀改为 .mjs
,或者在项目根目录的 package.json
文件中添加如下字段:
json
{
"type": "module"
}
这样,所有的 .js
文件都会被当作 ES Module 处理。
2. 示例代码
假设我们有一个简单的模块 utils.js
,其中包含一个函数 greet
,我们可以通过以下方式正确导入它。
方法一:使用 .mjs
文件
将文件命名为 utils.mjs
,内容如下:
javascript
// utils.mjs
export function greet(name) {
return `Hello, ${name}!`;
}
然后在另一个文件中使用 import
:
javascript
// app.mjs
import { greet } from './utils.mjs';</p>
<p>console.log(greet('World'));
方法二:修改 package.json
保持文件名为 utils.js
,但在 package.json
中添加 "type": "module"
:
json
{
"type": "module"
}
然后编写相同的代码:
``javascript
Hello, ${name}!`;
// utils.js
export function greet(name) {
return
}
// app.js
import { greet } from './utils.js';
console.log(greet('World'));
```
3. 其他注意事项
- 路径问题:在使用
import
时,相对路径必须以./
或../
开头,否则会报错。 - 动态导入:如果需要动态加载模块,可以使用
import()
函数,它返回一个 Promise:
javascript
// 动态导入
async function loadModule() {
const module = await import('./utils.js');
console.log(module.greet('Dynamic World'));
}</p>
<p>loadModule();
通过以上方法,你可以有效解决 Node.js 中 import
报错的问题。选择适合你项目需求的方法进行配置即可。