繁体   English   中英

SyntaxError:请求的模块“sqlite”不提供名为“default”的导出

[英]SyntaxError: The requested module 'sqlite' does not provide an export named 'default'

我在尝试导入 sqlite 时遇到问题,我添加了以下行:

import sqlite from 'sqlite';

我收到以下错误

file:///D:/WebPro/WebProg/cwCode/dbInteract.js:2
import sqlite from 'sqlite';
       ^^^^^^
SyntaxError: The requested module 'sqlite' does not provide an export named 'default'
    at ModuleJob._instantiate (node:internal/modules/esm/module_job:105:21)
    at async ModuleJob.run (node:internal/modules/esm/module_job:151:5)
    at async Loader.import (node:internal/modules/esm/loader:166:24)
    at async Object.loadESM (node:internal/process/esm_loader:68:5)
npm ERR! code 1
npm ERR! path D:\WebPro\WebProg\cwCode
npm ERR! command failed
npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node svr.js

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Rory\AppData\Local\npm-cache\_logs\2021-05-04T13_37_27_066Z-debug.log
PS D:\WebPro\WebProg\cwCode>

在将 package.json 中的类型更改为“模块”之前,我没有这个问题

如果我然后改变是

import sqlite from 'sqlite3';

我得到了这个错误

file:///D:/WebPro/WebProg/cwCode/svr.js:4
const express = require('express');
                ^

ReferenceError: require is not defined
    at file:///D:/WebPro/WebProg/cwCode/svr.js:4:17
    at ModuleJob.run (node:internal/modules/esm/module_job:154:23)
    at async Loader.import (node:internal/modules/esm/loader:166:24)
    at async Object.loadESM (node:internal/process/esm_loader:68:5)
npm ERR! code 1
npm ERR! path D:\WebPro\WebProg\cwCode
npm ERR! command failed
npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node svr.js

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Rory\AppData\Local\npm-cache\_logs\2021-05-04T13_44_05_322Z-debug.log
PS D:\WebPro\WebProg\cwCode> 

使用 ESM 模块,有两种方法可以导出功能:作为默认导出或命名导出。 导入这些功能的方式首先取决于它们的实际导出方式。

import defaultExport from 'module1'                  // Import default export 
import { namedExport1, namedExport2 } from 'module2' // Import named exports

请注意,一个模块实际上可能同时具有默认导出和命名导出,或者只是其中之一。

即使它们是同一个数据库的库, sqlitesqlite3包显然只是以不同的方式导出它们的 api - 而sqlite更具体地说似乎没有默认导出。

此外,当您将package.json type键设置为module时,您指示节点使用 ESM 模块系统加载您的程序。 该系统没有定义require() function - 这是由另一个名为 CommonJS 的 node.js 主流模块系统定义的。 你应该坚持这里的import语法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM