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

【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.mzph.cn/web/2531.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 引用组件后 不起作用 无效果 不显示

根据uniapp官方文档easycom组件规范 只要组件安装在项目的components目录下或uni_modules目录下,并符合components/组件名称/组件名称.(vue|uvue)目录结构(注意:当同时存在vue和uvue时,uni-app 项目优先使用 vue 文件,…

【C语言__指针02__复习篇12】

目录 前言 一、数组名的理解 二、使用指针访问数组 三、一维数组传参的本质 四、冒泡排序 五、二级指针 六、指针数组 七、指针数组模拟二维数组 前言 本篇主要讨论以下问题: 1. 数组名通常表示什么,有哪两种例外情况,在例外情况中…

Retelling|Gap Year

录音 Retelling|Gap Year gap year 转写 im a trainee from DJ teaching interpretation. And Im going to talk about taking a gap year. Its Most of our popular off for students are taken after college and before University, the UK taking a cut cups here and hav…

我用ADAU1467加5个ADAU1772,做20进10出的音频处理板(七):音量调节的更多例程

作者的话 ADAU1467是现阶段ADI支持最多通道的ADAU音频DSP,他配合外部的AD/DA,可以实现最多32路音频通道,接了一个小项目,我拿它做了一块20进10出的板,10个MIC/LINE输入,10个LINE IN输入,10个HPOUT&#xf…

烟雾识别图像处理:原理、应用与未来发展---豌豆云

本文详细介绍了烟雾识别图像处理的基本原理、应用领域以及未来的发展趋势。 通过深入剖析烟雾识别图像处理的关键技术和方法,帮助读者了解该领域的最新进展,为实际应用提供有价值的参考。 随着计算机视觉和人工智能技术的快速发展,烟雾识别…

贪心算法在单位时间任务调度问题中的应用

贪心算法在单位时间任务调度问题中的应用 一、引言二、问题描述与算法设计三、算法证明四、算法实现与效率分析五、C语言实现示例六、结论 一、引言 单位时间任务调度问题是一类经典的优化问题,旨在分配任务到不同的时间槽中,使得某种性能指标达到最优。…

Git和Github绑定

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

Qt 菜单栏上手教程:QMenuBar QMenu QToolbar

引言 在Qt框架中,QMenuBar、QMenu、QToolbar和QAction都是用于构建应用程序界面中的用户交互元素。 QMenuBar 是什么:QMenuBar是一个用于创建横向菜单栏的类。在桌面应用程序中,它通常位于窗口的顶部。应用场景:当您需要一个包含…

关于Spring事务管理之默认事务间调用问题

由事务的传播行为我们知道, 如果将方法配置为默认事务REQUIRED在执行过程中Spring会为其新启事务REQUIRES_NEW, 作为一个独立事务来执行. 由此存在一个问题。 如果使用不慎, 会引发org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back bec…

新技术前沿-2024-大型语言模型LLM的本地化部署

参考快速入门LLM 参考究竟什么是神经网络 1 深度学习 1.1 神经网络和深度学习 神经网络是一种模拟人脑神经元工作方式的机器学习算法,也是深度学习算法的基本构成块。神经网络由多个相互连接的节点(也称为神经元或人工神经元)组成,这些节点被组织成层次结构。通过训练,…

系统思考—啤酒游戏

最近有不少的合作伙伴来询问我啤酒游戏这个来自于MIT(麻省理工学院)经典的沙盘,上周刚刚结束Midea旗下的一家公司市场运营部《啤酒游戏沙盘-应对动态性复杂的系统思考智慧》的课程。 参与这次沙盘体验的团队成员深刻体会到了全局思考的重要性…

javascript(第三篇)原型、原型链、继承问题,使用 es5、es6实现继承,一网打尽所有面试题

没错这是一道【去哪儿】的面试题目,手写一个 es5 的继承,我又没有回答上来,很惭愧,我就只知道 es5 中可以使用原型链实现继承,但是代码一行也写不出来。 关于 js 的继承,是在面试中除了【 this 指针、命名提…

Python自动化系列4

1、for循环:遍历数据对象里的所有元素:str list tuple dict for 变量名 in 数据对象: 子代码(循环体) 循环多少次由什么决定的?—元素个数 中断:break continue count0 --#计数器 list1 [‘方方士’,‘七木’&#…

【八股】Redis篇

使用场景 🙂缓存:缓存穿透、击穿、雪崩、双写一致、持久化、数据过期、数据淘汰策略 🙂分布式锁:setnx、redisson 🙂消息队列、延迟队列、保存token:何种数据类型 🙂计数器 数据类型和它们底层…

如何配置googleplay谷歌后台的Auth登陆和支付权限

相信很多谷歌开发者在谷歌平台发布过app产品,如果你接入过登陆和支付,那么你对下面的后台配置步骤以及服务器如何使用这些参数来进行校验并不陌生,这篇文章我将分享给大家关于如何在后台配置你上架应用的登陆权限和支付权限,服务器端如何使用相应的参数来做验证。 配置谷歌…

GEE:加沙地区地表覆盖变化检测和土地利用变化APP

作者:CSDN @ _养乐多_ 本文将分享加沙地区地表覆盖变化检测和土地利用变化APP的用法和结果。APP基于谷歌地球引擎 Google Earth Engine (GEE)平台开发。 APP链接:https://ee-0409.projects.earthengine.app/view/change-detection-in-gaza 文章目录 一、初始界面二、变化…

动态创建运行时Java Bean

基于Java字节码技术,如ASM、Javassist,前者偏底层、构建复杂,但性能相对较高;后者提供了友好的API接口方法,优雅简单,但性能稍弱。 本文基于Javassist,初探性以创建一个简单的类、里面创建一个…

利用Spring中的SchedulingConfigurer实现数据库配置化定时任务

目录 1.利用Scheduled来实现传统的定时任务 2.两者的区别 3.Spring中的SchedulingConfigurer来拓展定时任务的灵活性 1)UrTaskConfig 2)TaskMain 3)BaseTask 4)效果 (1)插入配置定时任务的sql语句 …

【webrtc】Chrome和Firefox在SDP协商过程中,针对localhost的不同处理

内网下chrome端webrtc协商失败 现象 我有一个webrtc服务器在局域网内,使用chrome浏览器访问时,发现webrtc在做媒体协商时失败。 具体表现是,在交换sdp后,ice的状态是oniceconnectionstatechange: failed 但是换成Firefox浏览器…

第六十二章 IIS 7 或更高版本的替代选项 (Windows) - 替代选项 4:将 CGI 模块与 NSD 结合使用

文章目录 第六十二章 IIS 7 或更高版本的替代选项 (Windows) - 替代选项 4:将 CGI 模块与 NSD 结合使用替代选项 4:将 CGI 模块与 NSD 结合使用 (nph-CSPcgi*.exe)启用 CGI 模块 第六十二章 IIS 7 或更高版本的替代选项 (Windows) - 替代选项 4&#xff…