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. ubantu系统之安装notepadqq

    Ubuntu下的安装方法:     sudo add-apt-repository ppa:notepadqq-team/notepadqq     sudo apt-get update     s ...

  2. PAT B1024科学计数法

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...

  3. Java中JSONArray转换成int[]的办法

    今天写项目的时候要做一个MyBatis的带IN子句的删除,于是用一个整型数组来保存待删除数据的ID 从前端将JSON字符串搞过来之后如何将JSONArray转换成int类型数组就成了个问题 下面是我的 ...

  4. JAVA环境搭建之MyEclipse10+jdk1.8+tomcat8环境搭建详解

    一.安装JDK 1.下载得到jdk-8u11-windows-i586.1406279697.exe,直接双击运行安装,一直next就可以,默认是安装到系统盘下面Program Files, 我这里装 ...

  5. Django高级之-缓存

    一 缓存介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消 ...

  6. Python入门-程序测试

    1.功能测试 常规测试 #常规测试代码,一个模块写功能,一个模块调用功能 #=============模块1:gongneng_ceshi def func(v1, v2): return v1* v ...

  7. Servlet学习记录

    个人认为servlet属于一种控制程序,可以处理浏览器的请求并做出对应的回应.我们经常使用的是让一个类去继承HttpServlet,然后在doget或者dopost里面写东西. 目前我个人常在doge ...

  8. 我们可以定向调度某个pod在某个node上进行创建

    集群环境:1.k8s用的是二进制方式安装 2.操作系统是linux (centos)3.操作系统版本为 7.2/7.4/7.94.k8s的应用管理.node管理.pod管理等用rancher.k8s令 ...

  9. Java学习1——计算机基础知识

    本文包含了一些计算机基础知识:计算机组成:Windows常用快捷键:DOS常用命令:计算机语言发展史.

  10. JAVA 进程线程详解

    线程和进程 一.进程 进程是指运行中的程序,比如我们使用QQ,就启动该进程分配内存空间. 进程是程序的一次执行过程,或是正在运行的一个程序.是一个动态的过程:有它自升的产生,存在和消亡的过程 二.线程 ...