V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
misakawaque
V2EX  ›  问与答

nodejs 为什么没有办法 require 到 mysql 模块?

  •  
  •   misakawaque · 112 天前 · 926 次点击
    这是一个创建于 112 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在使用 nodejs 开发一套桌面小程序,需要读取数据库

    使用 npm install/yarn add 加载了 mysql 模块并在 js 文件中 const mysql=require('mysql')

    但是在使用 const conn=mysql.createConnection(profile)语句时没有响应

    于是使用 try catch 捕捉到在 上述的声明 conn 的语句中 没有成功 require 到 mysql 模块(报错信息如下:

    referenceError: cannot access 'mysql' before initialization

    )

    这是什么原因呢?经过排查,发现在上述 mysql 语句中,ide(vscode)提示 mysql 模块在 c 盘的某个路径,而实际上文件本地也存在一个可用的 mysql 模块(包括 index.js,connection.js 等)

    第 1 条附言  ·  112 天前
    问题部分代码粘贴 https://codepen.io/arconan-wang/pen/ZEKPJmX
    代码下载 http://47.100.188.113/download/pdfreader.zip
    13 条回复    2021-08-13 17:36:25 +08:00
    misakawaque
        1
    misakawaque  
    OP
       112 天前
    代码如下:
    const mysql=require('mysql')
    functon conn(){
    let connection=null;
    try{
    connection=mysql.createConnection({.....这里是数据库参数.....});
    }catch(e){
    alert(e.name+':'+e.message)
    }finally{
    alert("代码到这里说明取到了 mysql")
    connection.connect()
    }
    zhuyongqi9
        2
    zhuyongqi9  
       112 天前
    我在本地用了和你一样的代码,成功了
    zhuyongqi9
        3
    zhuyongqi9  
       112 天前
    你的 npm project 是怎么建立的,mysql module 是怎么导入
    misakawaque
        4
    misakawaque  
    OP
       112 天前
    @zhuyongqi9
    >mkdir pdfreader
    >yarn init
    > yarn add --dev electron
    >yarn add mysql

    大概是这么些代码
    yaodong0126
        5
    yaodong0126  
       112 天前
    这和没有 require 到 mysql 一毛钱关系都没有,如果没有 require 到,那么你的第一行就会报错,且报错内容为:can't find module
    Trim21
        6
    Trim21  
       112 天前   ❤️ 1
    这个错不是模块导入的错,是 js 作用域的错。

    你贴出来的 try 里面大概不小心多了一些不该有的东西
    renmu123
        7
    renmu123  
       112 天前 via Android
    大概因为连接是异步的,你用了同步代码
    yunying
        8
    yunying  
       112 天前
    我觉得你得完整将代码贴出来。就如 6 楼说的。应该是 mysql 常量作用域的问题。
    misakawaque
        9
    misakawaque  
    OP
       112 天前
    @yunying 是的,我找找代码粘贴板 qaq
    初步排查是 html 引用 js 函数造成的作用域出问题
    过几分钟大概能把代码贴出来
    misakawaque
        10
    misakawaque  
    OP
       112 天前
    @yunying

    问题部分代码粘贴 https://codepen.io/arconan-wang/pen/ZEKPJmX
    代码下载 http://47.100.188.113/download/pdfreader.zip(有整整 120M 不建议下)
    EridanusSora
        11
    EridanusSora  
       112 天前 via Android
    你这难道不是浏览器环境吗
    EridanusSora
        12
    EridanusSora  
       112 天前
    哦你是 electron 吗,那贴一下 background.js ?最新版本的 electron 默认不允许直接在 renderer 进程引入 node 模块的,需要设置 nodeIntegration 为 true,你看下你设置了吗
    misakawaque
        13
    misakawaque  
    OP
       111 天前
    @EridanusSora 没有这个 js 文件诶
    我也没在官方文档里找到
    这是什么啊大佬
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3810 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:04 · PVG 15:04 · LAX 23:04 · JFK 02:04
    ♥ Do have faith in what you're doing.