为什么模型没有导入到我的 Sails 应用程序中?

问题描述 投票:0回答:1

我正在帮助那些使用 Sails 框架 用 JavaScript 编写现有代码的人。对于上下文,我目前对该框架的经验为零。

为什么应用程序的模型没有被导入?

更具体地说,当我尝试运行代码时,开发人员定义的模型似乎没有被导入到任何地方。例如,当我尝试调用 API 来注册新用户时,我收到此错误:

ReferenceError: User is not defined
    at Object.fn (/app/api/controllers/auth/register.js:58:23)
    at wrapper (/node_modules/@sailshq/lodash/lib/index.js:3282:19)
    at parley.retry [as _handleExec] (/node_modules/machine/lib/private/help-build-machine.js:1016:29)
    at Deferred.exec (/node_modules/parley/lib/private/Deferred.js:286:10)
    at Deferred.switch (/node_modules/machine/lib/private/help-build-machine.js:1469:16)
    at Object._requestHandler [as auth/register] (/node_modules/machine-as-action/lib/machine-as-action.js:1153:27)
    at /node_modules/sails/lib/router/bind.js:248:46
    at routeTargetFnWrapper (/node_modules/sails/lib/router/bind.js:395:9)
    at Layer.handle [as handle_request] (/node_modules/express/lib/router/layer.js:95:5)
    at next (/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/node_modules/express/lib/router/layer.js:95:5)
    at /node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/node_modules/express/lib/router/index.js:341:12)
    at next (/node_modules/express/lib/router/index.js:275:10)
    at next (/node_modules/express/lib/router/route.js:127:14)

这表明模型(其中包括此处引用的

User
对象,并且确实存在于
User.js
文件中)未正确导入。我对
bootstrap.js
文件也有类似的错误,该文件试图实例化
Settings
对象,但不知道那是什么。 (我“解决”了这个问题,通过注释掉引导文件中的所有逻辑来启动应用程序。)

我通过 Docker Compose 使用一个非常小的 Docker 容器来运行它。我已经检查过,当我通过 SSH 进入容器时,各种模型文件都存在,所以这不是一个明显的容器化问题。

Dockerfile

FROM node:slim

COPY package.json ./

RUN npm install

docker-compose.yml

version: "3.7"
services:
  db:
    image: postgres
    restart: always
    environment:
      POSTGRES_PASSWORD: localpassword
    ports:
      - "5432:5432"
    volumes:
      - pgdata:/var/lib/postgresql/data
    networks:
      default:
        aliases:
          - database

  backend:
    build:
      dockerfile: Dockerfile
    working_dir: /app
    command: ["node", "app.js"]
    ports:
     - "1337:1337"
    networks:
      default:
        aliases:
          - backend
    volumes:
      - ./:/app

networks:
  default:

volumes:
  pgdata:
    driver: local
javascript sails.js
1个回答
0
投票

事实证明,Sails 框架(或堆栈中的其他东西)给出了有点误导性的回溯。

应用程序未正确配置为连接到数据库。如果 Sails 在模型导入过程中无法连接到数据库,它似乎会默默地失败,并且无法导入模型。

将数据库正确连接到应用程序解决了此问题并加载模型。

© www.soinside.com 2019 - 2024. All rights reserved.