bug1: Error [ERR_ MODULE_ NOT_ FOUND]: Cannot find module

在使用最新版LowDB(3.0)时,发现typescript中直接引用模块名(如以下代码示例)

import * as allService from '../all.service'

问题在于LowDB3.0官网示例中,import.meta.url要求tsconfig.json中的"module"不能为"commonjs"

// db.ts
const __dirname = dirname(fileURLToPath(import.meta.url)); // tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"target": "esnext",
"sourceMap": true,
"outDir": "dist"
},
}

这意味着ts文件中的模块将无法被调用,因此出现'Error [ERR_ MODULE_ NOT_ FOUND]: Cannot find module'的错误提示。

我的解决方法是将LowDB的版本降到1.0。

网上解决方法总结如下:

answer1:

使用 ECMAScript 模块时,必须提供文件扩展名: https://nodejs.org/api/esm.html#esm_mandatory_file_extensions

因此,除了在package.json中使用"type": "module"之外,您还需要指定文件扩展名import { url } from './helpers.js'。您还可以使用标志--es-module-specifier-resolution = node 将js文件解析为模块,就像之前使用require一样

answer2:

将下面的命令行

node index.js

换为

node --experimental-specifier-resolution=node index.js

或者在package.json文件中添加命令行

"scripts": {
"start": "NODE_OPTIONS='--experimental-specifier-resolution=node' node src/index.js
}

answer3:

在使用 ES 模块时,我们必须在 import 语句中指定文件扩展名

import * from "./demo.js"  // Works fine
import * from "./demo" // Will throw error as you see

ps: 上面两个选项在使用 commonJs 时都是有效的

答案选自stack overflow上的帖子,访问原帖请点击以下链接:

stack overflow

bug2: lowdb1.0+typescript+nodemon,nodemon不断重启服务器

解决方法:

根源在于存储数据的db.json文件不停在创建,解决方法是判断路径下文件是否已存在,若已存在则不再创建文件

参考文献:https://www.656463.com/wenda/Nodemonbuduanzhongqifuwuqi_504

LowDB采坑记录(主要为lowdb3.0的Cannot find module和lowdb1.0 node不断自启动的问题)的更多相关文章

  1. Antd前端开发采坑记录

    背景 基于页面友好,界面整洁美观:基于Antd框架开发虾能平台 选型 基于Antd-admin工程架构,进行开发:基于Antd+React+Umj 采坑记录 按照Html方式天机onClick方法,每 ...

  2. Charles 抓包工具安装和采坑记录

    Charles 抓包工具安装和采坑记录 网络抓包是解决网络问题的第一步,也是网络分析的基础.网络出现问题,第一步肯定是通过抓包工具进行路径分析,看哪一步出现异常.做网络爬虫,第一步就是通过抓包工具对目 ...

  3. HUE Oozie : error=2, No such file or directory采坑记录

    HUE Oozie : error=2, No such file or directory采坑记录 1.错误详情 一直都是同一种方式在hue上定义workflow,不知为啥 今天定义的就是不行... ...

  4. uni-app采坑记录

    1. uni-app采坑记录 1.1. 前言 这里记录下uni-app实践中踩的坑 1.2. 坑点 1.2.1. 触发事件@longTap和@longpress 这两个都表示长按触发事件,那么这两个有 ...

  5. v8环境搭建采坑记录

    项目组有把js接入C++服务求的需求,故开始了v8接入的工作,用了一天多时间,v8才在centos环境上成功安装,过程中踩了很多坑,下面将采坑过程记录如下: centos下编译安装v8:   查看ce ...

  6. Win7 node多版本管理gnvm采坑记录

    采坑描述:下载新node版本及切换node失败 解决:1.要用管理员权限启动cmd:2.确保node是空闲的 Gnvm下载地址: 32-bit | 64-bit Github 1.下载之后为 得到一个 ...

  7. angular采坑记录

    在angular中会遇到一些莫名的问题,导致不能完成想要的功能,可能是某项用法使用错误,或许是angular相对应不支持,或者是我们功力根本就没有达到.为了在每次采坑之后能有所收获,再遇到时能理解其根 ...

  8. Android Studio采坑记录

    折腾了几个月的Android Studio,终于在今天被我搞定了 ( ̄▽ ̄)~* 开贴记录下,免得下次再次采坑 先说下我之前电脑的环境配置吧,sdk是几年前在网上下载别人整理出来的包,一直没有更新过 ...

  9. golang采坑记录

    安装golang,引入第三方库,采坑 1.获取安装包 go语言中文网:https://studygolang.com/dl 官网地址:https://studygolang.com/dl 2.下载 选 ...

随机推荐

  1. MySQL优化篇系列文章(二)——MyISAM表锁与InnoDB锁问题

    我可以和面试官多聊几句吗?只是想... MySQL优化篇系列文章(基于MySQL8.0测试验证),上部分:优化SQL语句.数据库对象,MyISAM表锁和InnoDB锁问题. 面试官:咦,小伙子,又来啦 ...

  2. C#ASP.NET网站开发步骤

    1. 创建项目ASP.NET Web 应用程序. 2. 选择"Web 窗体"模板,然后单击 "确定" 按钮创建项目. 3. 在解决方案资源管理器中,右键添加we ...

  3. Python读文件并写入数组

    直接上代码: # 读文件 def get_venue(file): fname = file # 文件名 # 获取数据长度 len = 0 with open(fname, 'r+', encodin ...

  4. TensorFlow使用GPU训练时CPU占用率100%而GPU占用率很低

    在训练keras时,发现不使用GPU进行计算,而是采用CPU进行计算,导致计算速度很慢. 用如下代码可检测tensorflow的能使用设备情况: from tensorflow.python.clie ...

  5. JavaScript 中 empty、remove 和 detach的区别

    内容 empty.remove 和 detach的区别 jQuery 操作 DOM 之删除节点 方法名 元素所绑定的事件及数据是否也被移除 作用 $(selector).empty() 是 从被选元素 ...

  6. [UE][虚幻]创建默认媒体打包资源路径

    **创建默认媒体打包资源路径** **个人笔记**   **翻阅官方资料,实践出来的!**   **转载,"借鉴",重写...其他行为必须标明出处!!!** UE 官方默认有一个专 ...

  7. MySQL 的发展历史和版本分支

    时间和里程碑 想查看之前的版本可以从这里找到mysql4,5,8等版本http://mirrors.sohu.com/mysql/下面简单回顾下相关的一些版本信息1996 年 MySQL 1.0 发布 ...

  8. Spring基于注解自动装配

    前面我们介绍Spring IoC装载的时候,使用XML配置这种方法来装配Bean,这种方法可以很直观的看到每个Bean的依赖,但缺点也很明显:写起来非常繁琐,每增加一个组件,就必须把新的Bean配置到 ...

  9. 前端CSS基础

    一:CSS 1.什么是CSS? CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素. 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染). C ...

  10. 高精度加法(C++实现)

    高精度加法 简介 用于计算含有超过一般变量存放不下的非负整数 高精度加法这个过程是模拟的小学竖式加法计算 步骤 以下有顺序之分 数组清零 输入 获取长度 逆置 字符型数字转成对应的整型数字 计算并输出 ...