【node:19212】 解决 Node.js 报错 “将文件视为 CommonJS 模块“

embedded/2024/9/23 7:24:14/

【node:19212】 解决 Node.js 报错 “将文件视为 CommonJS 模块”

当在 Node.js 中运行 JavaScript 文件时,可能会遇到类似以下的报错信息:

(node:19212) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
D:\my_dev\frontend\svelte\demo1\svelte-demo\src\test\test.js:1
import handleHashChange from "./test-module/test1";
^^^^^^SyntaxError: Cannot use import statement outside a module

这个报错表明 Node.js 在处理 JavaScript 文件时遇到了 import 语句,但未将文件视为 ES 模块。下面是解决这个问题的几种方法。

方式一

1. 设置 “type”: “module”:

在项目的 package.json 文件中添加 "type": "module" 字段,告诉 Node.js 该项目使用 ES 模块。

{"type": "module",...
}

这样做后,Node.js 将会将所有 .js 文件视为 ES 模块。

2. 使用 .mjs 扩展名:

将文件的扩展名从 .js 改为 .mjs,这样 Node.js 将会将文件视为 ES 模块。

mv ./src/test/test.js ./src/test/test.mjs

这样做后,Node.js 将会自动将文件视为 ES 模块。

3. 使用 --experimental-modules 标志:

在运行 Node.js 时,使用 --experimental-modules 标志启用 ES 模块支持。

node --experimental-modules ./src/test/test.js

这样做后,Node.js 将会将文件视为 ES 模块。

方式二

1. 在顶部添加 require 语句:

在文件顶部添加一个 require 语句,将 import 语句转换为 CommonJS 的 require 语法。

const handleHashChange = require("./test-module/test1").default;

这样做后,Node.js 将会将文件视为 CommonJS 模块。

2. 使用 Babel 转换:

使用 Babel 将 ES 模块转换为 CommonJS 模块,然后在 Node.js 中运行。

  1. 安装 Babel 相关的依赖:
npm install @babel/core @babel/cli @babel/preset-env --save-dev
  1. 创建 .babelrc 文件来配置 Babel:
{"presets": ["@babel/preset-env"]
}
  1. 使用 Babel 转换代码:
npx babel ./src/test/test.js --out-file ./dist/test.js
  1. 在 Node.js 中运行转换后的代码:
node ./dist/test.js

以上是两种常见的解决方案,你可以根据自己的需求选择其中一种。每种方法都有其优缺点,你可以根据项目的具体情况选择最适合的方法。


http://www.ppmy.cn/embedded/18827.html

相关文章

ArcGIS小技巧—你分得清投影与定义投影吗

Arcmap中关于投影的工具有四个,分别是定义投影、投影、投影栅格、批量投影。这四个工具既有相同之处也有不同之处,下面我将一一介绍。 ①定义投影:Arcmap中关于定义投影工具是这样描述的:“所有地理数据集均具有一个用于显示、测…

k8s部署alertmanager

修改alertmanager-pvc.yaml文件中的信息&#xff0c;然后应用YAML文件 cat > /opt/k8s/alertmanager/alertmanager-pvc.yaml <<EOF apiVersion: v1 kind: PersistentVolumeClaim metadata:name: alertmanager-data-pvc spec:accessModes:- ReadWriteManystorageClass…

iOS 使用Hex色值设置颜色(可设置透明度使用4个字节色值赋值)

一、先了解什么是Hex色值 简单来说就是用十六机制来表示三原色&#xff0c;三原色不同强度组合出不同颜色&#xff1b; 详见&#xff1a;Hex色值是什么&#xff08;含透明度&#xff09; 二、代码实现 iOS不如 Kotlin 有API可直接支持HEX赋值&#xff0c;得自己写个扩展方法…

AI时代的新沟通能力:结构化提示词

结构化提示词&#xff08;Structured Prompts&#xff09;是在使用大型语言模型&#xff08;Large Language Models&#xff0c;LLMs&#xff09;时&#xff0c;用来引导模型生成特定类型输出的输入文本。这些提示词通常包含明确的指令和上下文信息&#xff0c;使得生成的文本更…

新版IDEA频繁卡顿(UI 冻结)解决方案

当开启多项目多环境或复杂项目大项目时&#xff0c;新版IDEA会频繁卡顿冻结UI。 因为IDEA是Java写的&#xff0c;卡顿自然就是因为频繁Full GC导致的。 新版IDEA使用了G1垃圾回收器&#xff0c;当期望STW内一直无法有效回收大对象时&#xff0c;就会触发Full GC&#xff08;G1的…

vscode中jsconfig.json文件首行提示错误

在使用react框架开发前端时&#xff0c;文件jsconfig.json首行提示错误&#xff0c;打开设置&#xff0c;勾选如下图这项

Java基础入门day40

day40 DQL 分组补充 create table student(sid int,name varchar(20),sex char(6),score double,cid int ); ​ insert into student values(100, wukong, male, 99, 1); insert into student values(101, wuneng, male, 59, 1); insert into student values(102, wujing, ma…

结构化查询语言(SQL)的作用

结构化查询语言&#xff08;SQL&#xff09;的作用 结构化查询语言&#xff08;SQL&#xff09;是一种专门用来管理关系型数据库的语言。它具有以下重要作用&#xff1a; 1. 数据库管理 SQL被广泛应用于数据库管理&#xff0c;包括创建数据库、表和视图&#xff0c;定义数据…