【问题标题】:node-oracledb Error: NJS-069 in nuxt middlewarenode-oracledb 错误:nuxt 中间件中的 NJS-069
【发布时间】:2021-11-21 22:10:56
【问题描述】:

我可以访问数据库并从我的 Oracle 数据库中获取数据。但是这个错误发生在我的浏览器控制台中。

import oracledb from 'oracledb'

oracledb.outFormat = oracledb.OUT_FORMAT_OBJECT

export default async function (ctx) {
  let connection

  try {
    connection = await oracledb.getConnection({
      user: 'user',
      password: 'user!1',
      connectString: '127.0.0.1:1521/uat2'
    })
    const result = await connection.execute(
      `SELECT PAGETITLE, ACTIVITYID
       FROM TB_MOULD
       WHERE ACTIVITYID = 'WYDJQHD001'`,
      []
    )
    console.log(result.rows)
  } catch (err) {
    console.error(err)
  } finally {
    if (connection) {
      try {
        await connection.close()
      } catch (err) {
        console.error(err)
      }
    }
  }
}

我猜 webpack 在打包过程中不区分 node-oracledb 是否可以在非服务器端运行。 谁有解决方案?

【问题讨论】:

  • 节点版本是多少? node -v
  • v12.18.3 @kissu

标签: nuxt.js node-oracledb


【解决方案1】:

来自 node-oracledb 5.0 changelog:

Webpack 用户应将 node-oracledb 二进制文件复制到输出目录的子目录中。例如,如果输出目录是dist,那么二进制文件应该在dist/node_modules/oracledb/build/Release/oracledb-5.0.0-linux-x64.nodewebpack.config.js 中的复制插件可以通过将 node_modules/oracledb/build 复制到同名目录来完成此操作。见Issue 1156

可能需要审查的是 ES 模块的使用 - 我没有在这种情况下尝试过它们。

【讨论】:

  • 这个我试过了,不行
【解决方案2】:

我现在找到了解决办法。

  if (process.server) {
    const oracledb = require('oracledb')
    oracledb.outFormat = oracledb.OUT_FORMAT_OBJECT
    //......
  }

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 2019-01-13
    • 2022-12-19
    • 2018-11-14
    • 2020-05-18
    • 2018-10-03
    • 2015-08-23
    • 1970-01-01
    • 2019-10-19
    相关资源
    最近更新 更多