【问题标题】:Error: ENOENT: no such file or directory, scandir '/app/migrations'错误:ENOENT:没有这样的文件或目录,scandir '/app/migrations'
【发布时间】:2019-01-13 04:30:48
【问题描述】:

尝试运行

heroku run knex migrate:latest

在 heroku 上使用 node 和 pg 设置数据库,我收到以下错误

Error: ENOENT: no such file or directory, scandir '/app/migrations'

knexfile.js

module.exports = {
  development: {
    client: 'sqlite3',
    connection: {
      filename: './db/dnd.sqlite3'
    },
    useNullAsDefault: true,
    migrations: {
      directory: './db/migrations'
    },
    seeds: {
      directory: './db/seeds'
    }
  },
  production: {
    client: 'pg',
    connection: {
      database: 'my_db',
      user: process.env.USER,
      password: process.env.PASSWORD,
      DATABASE_URL: process.env.DATABASE_URL,
    }
  }
};

这是我的 package.json 文件的副本

{
  "name": "backend",
  "version": "1.0.0",
  "description": "backend",
  "main": "index.js",
  "scripts": {
    "test": "(knex migrate:rollback && knex migrate:latest && knex seed:run) && NODE_ENV=test jest --verbose --watch",
    "start": "nodemon server.js",
    "re": "knex migrate:rollback && knex migrate:latest && knex seed:run"
  },
  "keywords": [],
  "author": "my-name",
  "license": "MIT",
  "dependencies": {
    "bcryptjs": "^2.4.3",
    "cors": "^2.8.4",
    "express": "^4.16.3",
    "helmet": "^3.14.0",
    "jsonwebtoken": "^8.3.0",
    "knex": "^0.15.2",
    "morgan": "^1.9.1",
    "pg": "^7.8.0",
    "renderer": "^0.1.5",
    "sqlite3": "^4.0.3"
  },
  "devDependencies": {
    "coveralls": "^3.0.2",
    "enzyme": "^3.7.0",
    "enzyme-adapter-react-16": "^1.6.0",
    "jest": "^23.6.0",
    "mocha": "^5.2.0",
    "nodemon": "^1.18.5",
    "supertest": "^3.3.0"
  },
  "jest": {
    "testEnvironment": "node",
    "testPathIgnorePatterns": [
      "/node_modules/",
      "<rootDir>/notes/src/__tests__/"
    ]
  }
}

在使用 pg 和 node 并尝试部署到 heroku 之前,有人遇到过这个错误吗?我已经尝试了很多东西,但目前似乎有点碰壁。不知道该怎么办。

【问题讨论】:

  • 我在 heroku 上遇到了同样的错误。有人有解决方案吗?像 OP 一样,我的迁移位于名为“db”的文件夹中。如何让 heroku 找到那个文件夹?

标签: node.js heroku knex.js


【解决方案1】:

如果你的迁移文件夹是空的,它不会被推送到 Heroku,所以你可以做两件事。

1) 使用 heroku run bash --app 'your-app-name' 手动创建文件夹

2) 在迁移文件夹中创建一个空文件,提交并推送到 Heroku

【讨论】:

    猜你喜欢
    • 2017-12-28
    • 2021-04-27
    • 2021-12-05
    • 2021-12-04
    • 2022-09-30
    • 2022-06-28
    • 2018-06-09
    • 2019-10-14
    • 2019-06-24
    相关资源
    最近更新 更多