我试图在Node.js中连接数据库,但收到错误liquibase is not a function
。我确实使用npm install liquibase
安装了模块。为什么我会出现此错误?
const liquibase = require('liquibase');
liquibase({
changeLogFile: 'resources/liquibase/db.changelog.xml',
url: 'jdbc:postgresql://localhost:5432/postgres',
username: 'postgres',
password: 'admin'
})
.run('<action>', '<action-params>')
.then(() => console.log('success'))
.catch((err) => console.log('fail', err));
新错误
Error: Cannot find module 'node-liquibase'
Require stack:
- C:UsersfabioOneDriveAmbiente de TrabalhoLiquibaseNodeindex.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
at Function.Module._load (internal/modules/cjs/loader.js:725:27)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (C:UsersfabioOneDriveAmbiente de TrabalhoLiquibaseNodeindex.js:1:19)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'C:\Users\fabio\OneDrive\Ambiente de Trabalho\LiquibaseNode\index.js'
]
}
这里有一个节点错误文档的链接。
MODULE_NOT_FOUND
在尝试require((或导入操作时,无法解析模块文件。
我的猜测是node-liquibase
没有安装在应用程序的node_modules
目录中,和/或没有全局安装在主机上
其他评论者已经发现了我要提到的一些问题,我也鼓励大家看看在JavaScript文件中使用它的文档。在你的原始帖子中有一些错误,通过确保你导入了正确的包并正确使用它来解决。
如果你仍然有问题,如果我处于你的位置,我会采取以下步骤:
- 验证Node应用程序的根目录中是否有
node_modules
目录 - 验证
node_modules/liquibase
是否也存在于我的Node应用程序的根目录中 - 验证我正在调用的节点的任何实例都是我期望的"位置"(即"我调用的是正确的应用程序吗?"(
下面是Node Liquibase Sandbox示例repo的树结构示例。这将显示一个正在使用node-liquibase
的项目可能是什么样子:
.
├── README.md
├── assets
│ └── img
├── changelog.xml
├── db-start-up.sh
├── index.ts
├── node_modules
│ ├── @types
│ ├── liquibase
│ ├── tslib
│ └── typescript
├── package.json
├── testing.js
├── tsconfig.esm.json
├── tsconfig.json
└── yarn.lock
在本例中,有一个package.json
文件,它定义了有关Node应用程序的所有元数据,并且作为直接的"同级",还有一个安装了该应用程序的node-liquibase
版本的node_modules
目录。
TLDR基本上,您的应用程序正在请求node-liquibase
,但Node找不到。