HCRM博客

Node.js 导入模块时出现 import 报错 node 错误解析

在 Node.js 中使用import 导入模块时报错,通常是由于 Node.js 默认使用 CommonJS 规范,而import 语句是 ES6 模块的语法,以下是详细的解决方案及示例:

解决方案

1、安装 Babel:Babel 是一个 javaScript 编译器,可以将 ES6+ 的代码转换为向后兼容的 JavaScript 代码,从而让 Node.js 能够理解和运行使用import 语句的代码。

Node.js 导入模块时出现 import 报错 node 错误解析-图1
(图片来源网络,侵权删除)

在项目根目录下执行以下命令安装相关依赖:

  • npm install save babelcore babelpresetenv babelcli

创建.babelrc 文件,内容如下:

  • {
  • "presets": [
  • ["env", { "modules": true }]
  • ]
  • }

或者使用以下命令创建并初始化.babelrc 文件:

  • npm init y
  • npm install savedev @babel/core @babel/presetenv
  • npx babel init

2、修改package.json 文件:在scripts 字段中添加启动脚本,以便使用 Babel 来编译并运行代码。

  • "scripts": {
  • "start": "node index.js"
  • }

修改为:

  • "scripts": {
  • "start": "npx babelnode index.js"
  • }

3、使用.mjs 扩展名:另一种方法是将文件的扩展名改为.mjs,这样 Node.js 会将其视为 ES 模块,从而可以直接使用import 语句,而无需 Babel 编译,将index.js 重命名为index.mjs

Node.js 导入模块时出现 import 报错 node 错误解析-图2
(图片来源网络,侵权删除)

4、设置type 字段:在package.json 文件中添加"type": "module" 字段,明确指定该包使用 ES 模块。

  • {
  • "name": "myproject",
  • "version": "1.0.0",
  • "main": "index.js",
  • "type": "module"
  • }

示例

假设有以下简单的 ES6 模块代码:

  • // mathModule.js
  • export function add(a, b) {
  • return a + b;
  • }
  • export function subtract(a, b) {
  • return a b;
  • }

在另一个文件中使用import 导入并使用该模块:

  • // main.js
  • import { add, subtract } from './mathModule.js';
  • console.log(add(2, 3)); // 输出 5
  • console.log(subtract(5, 3)); // 输出 2

如果按照上述方法配置好 Babel 或修改文件扩展名、package.json 等,就可以正常运行这个使用import 的代码了。

Node.js 导入模块时出现 import 报错 node 错误解析-图3
(图片来源网络,侵权删除)

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/gz/23751.html

分享:
扫描分享到社交APP
上一篇
下一篇