You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Discord机器人脚本中正确配置node-json-db并解决import语句报错问题

解决Node.js中SyntaxError: Cannot use import statement outside a module问题

你遇到的这个错误核心原因是:你的命令文件使用了CommonJS模块规范(用module.exports导出),但同时又混用了ES模块的import语句,Node.js默认不允许在CommonJS模块中直接使用import。结合你的Discord机器人场景,给你两种最实用的解决方案:

方案1:改用CommonJS的require(最快捷,无需调整项目结构)

因为你的main.js是用CommonJS加载命令的,直接把import替换成CommonJS标准的require就能完美兼容:

module.exports = { 
  name: 'search', 
  description: "Searches for patient info from database", 
  async execute(message, args, Discord){ 
    // 替换import为require
    const { JsonDB } = require('node-json-db'); 
    const { Config } = require('node-json-db/dist/lib/JsonDBConfig'); 

    // 修正路径写法:去掉多余空格,正确拼接.json后缀
    const cleanedQuery = message.content.replace('search', '').trim();
    const dbPath = `pdb/${cleanedQuery}.json`;
    
    var db = new JsonDB(new Config(dbPath, true, false, '/')); 
    // push是异步方法,建议用await确保写入完成
    await db.push("/test1","super test"); 
  } 
}

额外提示:原代码里的路径拼接有小问题,我加了trim()去掉search命令后的多余空格,避免生成带空格的无效路径,同时把.json后缀放在正确的拼接位置。

方案2:切换整个项目为ES模块(适合长期维护)

如果你想统一使用现代ES模块的import/export语法,需要做以下调整:

  1. 在项目根目录的package.json中添加"type": "module"字段,告诉Node.js把所有.js文件当作ES模块处理。
  2. 修改命令文件的导出方式,把module.exports换成export default:
export default { 
  name: 'search', 
  description: "Searches for patient info from database", 
  async execute(message, args, Discord){ 
    import { JsonDB } from 'node-json-db'; 
    import { Config } from 'node-json-db/dist/lib/JsonDBConfig'; 

    const cleanedQuery = message.content.replace('search', '').trim();
    const dbPath = `pdb/${cleanedQuery}.json`;
    
    const db = new JsonDB(new Config(dbPath, true, false, '/')); 
    await db.push("/test1","super test"); 
  } 
}
  1. 同步修改你的main.js,把所有require语句替换成import,确保整个项目的模块规范统一。

这种方式需要调整所有现有文件的语法,但长期来看更符合JavaScript的发展趋势。

内容的提问来源于stack exchange,提问作者MysteeriMikitin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 20:03:11