【问题标题】:Why does the import show an error while the import has been run correctly为什么在导入已正确运行时导入显示错误
【发布时间】:2022-01-24 14:38:27
【问题描述】:

说明

我在尝试运行我的代码时遇到了这个问题。我尝试更改我的 tsconfig 的多个部分以尝试查看它是否会有所作为。我真的不能再告诉我我尝试改变了什么以及我也改变了什么,因为我忘记了:)。希望大家知道这个问题的答案

我正在使用包 ts-node-dev 来运行我使用的代码。

Main.ts

这是我的主要 ts 代码。 (先运行)

import { ShardingManager } from 'discord.js';
import { client } from '../config/config';
import chalk from 'chalk';

const manager = new ShardingManager(__dirname + '/client.ts', { token: client.token });

manager.on('shardCreate', (shard) => console.log(chalk.magenta(`[SHARD MANAGER]`), `Launched shard ${shard.id}`));

manager.spawn();

Client.ts

这是 client.ts 代码。 (由分片管理器运行)

import { Client as DiscordClient, Intents } from 'discord.js';
import { client } from '../config/config';

const Client = new DiscordClient({ intents: [Intents.FLAGS.GUILDS] });

Client.on('interactionCreate', (interaction) => {
  if (!interaction.isCommand()) return;

  const { commandName } = interaction;

  if (commandName === 'stats') {
    return Client.shard
      .fetchClientValues('guilds.cache.size')
      .then((results) => {
        // eslint-disable-next-line @typescript-eslint/ban-ts-comment
        // @ts-ignore
        return interaction.reply(`Server count: ${results.reduce((acc, guildCount) => acc + guildCount, 0)}`);
      })
      .catch(console.error);
  }
});

Client.login(client.token);

错误

这是我遇到的错误

/workspace/Hez/src/client/client.ts:1
import { Client as DiscordClient, Intents } from 'discord.js';
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at Object.compileFunction (node:vm:352:18)
    at wrapSafe (node:internal/modules/cjs/loader:1031:15)
    at Module._compile (node:internal/modules/cjs/loader:1065:27)
    at Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Object.nodeDevHook [as .js] (/workspace/Hez/node_modules/ts-node-dev/lib/hook.js:63:13)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/workspace/Hez/node_modules/ts-node-dev/lib/wrap.js:104:1)
[ERROR] 16:20:04 SyntaxError: Cannot use import statement outside a module

包.json

{
  "devDependencies": {
    "@discordjs/builders": "^0.9.0",
    "@discordjs/rest": "^0.2.0-canary.0",
    "@types/express": "^4.17.13",
    "@types/node": "^17.0.2",
    "@typescript-eslint/eslint-plugin": "^5.8.0",
    "@typescript-eslint/parser": "^5.8.0",
    "discord-api-types": "^0.25.2",
    "discord.js": "^13.3.1",
    "eslint": "^8.5.0",
    "eslint-config-prettier": "^8.3.0",
    "eslint-plugin-prettier": "^4.0.0",
    "express": "^4.17.2",
    "mongoose": "^6.1.2",
    "prettier": "^2.5.1",
    "ts-node": "^10.4.0",
    "ts-node-dev": "^1.1.8",
    "typescript": "^4.5.4"
  },
  "dependencies": {
    "chalk": "4.1.2"
  },
  "name": "",
  "description": "",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "none",
    "start": "ts-node src/start.ts",
    "dev": "ts-node-dev src/start.ts",
    "watch": "npx tsc",
    "prettier-format": "prettier --config .prettierrc 'src/**/*.ts' --write",
    "lint": "eslint . --ext .ts"
  },  "keywords": [],
  "author": "",
  "license": "ISC",
}

【问题讨论】:

    标签: typescript types


    【解决方案1】:

    问题出在包 ts-node-dev 上,当尝试使用正常的 ts 编译器进行编译时,它可以工作!

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    相关资源
    最近更新 更多