我正在將我的機器人轉換為ES6語法。因為我不能使用。const command = require(`./commands/${file}`),我試著用import command from `./commands/${file}`;。它沒有起作用,它給了我一個奇怪的錯誤:
。
file://D:/Documenti/Coding/discord/XayBot/XayBotMain/src/index.js:15
import命令 from `./commands/${file}`。
^^^^^^^
SyntaxError: Unexpected identifier
這是它正在運行的代碼:
這是它正在運行的代碼。
import { Client, Collection } from "discord.js"。
import { readdir } from "fs-extra"/span>;
const client = new Client({
intents: ["GUILDS", "GUILD_MEMBERS", "GUILD_MESSAGES"]。
});
client.commands = new Collection() 。
client.once("ready", async ( ) => {
try {
const commandFiles = readdir("./src/commands">).filter(
file.endsWith(" .js")。
);
commandFiles.forEach(async (file) => {
import命令 from `./commands/${file}`。
client.commands.set(command.name, command)。
});
} catch (err) {
console.error(err)。
}
});
client.login(process.env.D_TOKEN)。
我正在使用"type": "module"在package.json中,所以這不是問題,我想我可能用錯了,如果是這樣,我應該怎么解決呢?
Nodejs版本。16.9.0 | Npm ver: 7.22 | Npm ver: 7.22 Discord.js版本。13.1.0
uj5u.com熱心網友回復:
匯入
如果你要從一組出口中匯入一個資產,你必須使用{}來環繞被匯入的變數。
import { command } from `.commands/${file}`。
如果你打算匯入整個檔案,你可以使用以下語法:
如果你打算匯入整個檔案,你可以使用以下語法:
import * as command from `. commands/${file}`。
然而你現在的例子將仍然拋出一個錯誤,因為你只能通過命名空間(在這種情況下,檔案的最頂端)匯入檔案(同時使用import/export)
解決方案動態匯入或
require()。最好是前者。
1.import require
您可以查看這個例子,了解如何在同一個檔案中同時使用import和require()。請注意,在使用Typescript時,可以有另外一種處理方式。
2.動態匯入(推薦)
使用動態匯入
//namespace。
import { foo } from "./bar"/span>。
//這也是可行的。
async function someFunc() {
const { default:foo } = await import("./bar"/span>) 。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/334236.html
標籤:
上一篇:從動態嵌套陣列生成物件的平面陣列
