[英]How do I import a module with type in nodejs 16?
所以,我使用Node16 /打字稿,我試圖進口discord.js
。
我想使用import
語法,而不是require
因為我更習慣它,並且還會導致 TS 自動添加我導入的類型。
但遺憾的是,它是如此混亂,而且有太多的 import/require 語法,我永遠不知道該怎么做。
所以我這樣做了:
import dotenv from 'dotenv';
import { Client, Intents } from 'discord.js';
使用簡單的 tsconfig
"target": "es2020"
"module": "es2020"
"moduleResolution": "node"
但是當我運行我的代碼時它失敗了。
類型錯誤:無法讀取 file:///C:/Users/xxxx/Documents/Repository/xxxx/node_modules/@discordjs/builders/dist/index.mjs:1:831 at ModuleJob 的未定義屬性(讀取 'minLength') .run (node:internal/modules/esm/module_job:185:25) at async Promise.all (index 0) at async ESMLoader.import (node:internal/modules/esm/loader:281:24) at async loadESM ( node:internal/process/esm_loader:88:5) 在 async handleMainPromise (node:internal/modules/run_main:65:12)
我知道discord.js
導出為CommonJS的,所以我使用的require
來代替。
現在代碼可以工作了,但是找不到我導入的類型,並且 eslint 抱怨
Require 語句不是 import 語句的一部分。
我嘗試了所有其他導入/需要解決方案,但仍然沒有任何效果,要么需要type : module
in package.json 但代碼不起作用,要么抱怨我如何導入東西...
基本上,如果我使用我想要的方式import { Client, Intents } from 'discord.js';
代碼不工作,但編譯器和 VsCode 自動完成所有內容並知道類型(並且 eslint 沒有錯誤)
const Discord = require('discord.js');
將沒有類型,eslint 會抱怨,但代碼會工作......
我該怎么辦 ?
您的tsconfig.json
有問題。
它應該是:
"target": "es2015"
更改后,再次運行tsc -p tsconfig.json
。
目標意味着打字稿被編譯到該目標。 通常我們為此使用 es2015 來最大化支持的平台。 你想要的是lib
。
"target": "es2015",
"lib": ["es2020"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.