簡體   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