Node.js-liquibase不是函数
我正在尝试在 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:UsersfabioOneDriveAmbiente de TrabalhoLiquibaseNodeindex.js'
]
}
回答
这是 Node 错误文档的链接。
MODULE_NOT_FOUND
尝试 require() 或导入操作时无法解析模块文件。
我的猜测是它node-liquibase没有安装在您的应用程序node_modules目录中,和/或没有安装在您的主机上。
其他评论者已经发现了我将要提到的一些问题,我也鼓励您查看在 JavaScript 文件中使用它的文档。您的原始帖子中有一些错误,通过确保您导入正确的包并正确使用它来解决。
如果您仍然遇到问题,如果我处于您的位置,我将采取以下步骤:
- 验证
node_modules我的 Node 应用程序的根目录中有一个目录 - 验证是否
node_modules/liquibase也存在于我的 Node 应用程序的根目录中 - 验证我正在调用的任何 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_modules包含这个应用程序安装版本的node-liquibase.
TLDR;基本上你的应用程序要求node-liquibase但节点找不到它。