【问题标题】:Error: Please install tedious package manually错误:请手动安装繁琐的软件包
【发布时间】:2022-02-25 12:48:44
【问题描述】:

我在运行使用 sequelize 库连接 MSSQL 数据库的节点应用程序时遇到此错误。

我尝试在本地和全局手动安装繁琐,但错误仍然存​​在。

错误的完整堆栈如下:

Error: Please install tedious package manually
at new ConnectionManager (D:\medibookr-api\node_modules\sequelize\lib\dialects\mssql\connection-manager.js:27:15)
at new MssqlDialect (D:\medibookr-api\node_modules\sequelize\lib\dialects\mssql\index.js:14:30)
at new Sequelize (D:\medibookr-api\node_modules\sequelize\lib\sequelize.js:239:20)
at Object.<anonymous> (D:\medibookr-api\models\index.js:30:17)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object.<anonymous> (D:\medibookr-api\repositories\users.js:4:16)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object.<anonymous> (D:\medibookr-api\routes\middleware\authenticated.js:3:25)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)

【问题讨论】:

  • 嗨,你能找到解决办法吗?

标签: node.js sequelize.js tedious


【解决方案1】:

要开始解决此问题,您必须确保已安装 sequelize 和 tedious,并且它们的名称出现在 package.json 的依赖项中。同样,如果您使用 typescript,则必须在 devDependencies 中添加 @types/node@types/tedious@types/validator

运行就可以了

yarn add sequelize
yarn add tedious
yarn add -D @types/node
yarn add -D @types/tedious
yarn add -D @types/validator

那么您的package.json 应该如下所示:

"dependencies": {     
  ...
  "sequelize": "^6.6.2",
  "tedious": "^11.0.8"
},
"devDependencies": {
  "@types/node": "^14.6.2",
  "@types/tedious": "^4.0.3",
  "@types/validator": "^13.1.3",

最后但更重要的是导入繁琐并将其作为 dialectModule 添加到 sequelize 配置选项中,如下所示:

import { Sequelize } from 'sequelize';
import * as tedious from 'tedious';

...

const config = {
  username: 'user',
  password: 'pass',
  database: 'db',
  host: 'host',
  dialect: 'mssql',
  dialectModule: tedious, //   <----   <---- this is the key!!
  define: { underscored: true },
  dialectOptions,
};

...

const sequelize = new Sequelize(config.database, config.username, config.password, config);

享受!! :D

【讨论】:

    【解决方案2】:

    请将其添加到您的 packege.json 文件中。

    似乎 sequalize 使动态 require 调用变得乏味。

    "bin": "index.js",
    "pkg": {
        "scripts": ["node_modules/tedious/lib/tedious.js", "models/*.js"],
        "assets": ["config/log.json"]
      }
    

    你可以找到完整的解释here。它对我有用。

    【讨论】:

      【解决方案3】:

      第一:

      使用以下命令检查您是否在全局范围内安装了繁琐或续集。

      npm ls -g --depth=0
      

      如果您觉得乏味或续集,请使用以下命令全局卸载它们。

      npm uninstall -g tedious
      npm uninstall -g sequelize
      

      旁注:如果您看到“sequelize-cli”,可以在全球范围内使用,无需卸载它。这与“续集”不同

      那么:

      npm uninstall tedious
      npm install tedious
      

      为我工作:)

      【讨论】:

        猜你喜欢
        • 2020-09-10
        • 2020-06-09
        • 2018-11-09
        • 2018-10-20
        • 2014-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多