我有一个应用程序.js node 应用程序.随着这个文件开始增长,我想在一些其他文件中移动部分代码,我将"需要"或"包括"在应用程序中.js文件.

我在try 这样的事情:

// Declare application
var app = require('express').createServer();

// Declare usefull stuff for DB purposes
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;

// THE FOLLOWING REQUIRE DOES NOT WORK
require('./models/car.js');

在车里.js:

// Define Car model
CarSchema = new Schema({
  brand        : String,
  type : String
});
mongoose.model('Car', CarSchema);

我发现了一个错误:

ReferenceError: Schema is not defined

我只是想了解汽车的内容.加载js(而不是将所有内容都放在同一app.js文件中)在 node 中有一种特殊的方式来实现这一点.js?

推荐答案

把重点放在其他人在顶层所说的话上,并不会产生一个全局变量.如果你想要一个全局变量,那么写global.foo.但我们知道地球人是邪恶的.

如果你是在 node 中使用全局变量的人.我参与的js项目我会重构它们,因为这方面的用例太少(有一些例外,但这不是一个).

// Declare application
var app = require('express').createServer();

// Declare usefull stuff for DB purposes
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;

require('./models/car.js').make(Schema, mongoose);

在车里.js

function make(Schema, mongoose) {
    // Define Car model
    CarSchema = new Schema({
      brand        : String,
      type : String
    });
    mongoose.model('Car', CarSchema);
}

module.exports.make = make;

Node.js相关问答推荐

使用prisma迁移到SQL失败

如何修复PayPal Node.js Webhook中Webhook签名验证失败?''

获取驱动器文件夹的直接子文件夹时出现问题

如何从谷歌云中部署的应用程序连接到mongoDB Atlas?

使用 NPM 8 安装本地构建

try 在 NodeJS 项目中实现 SimplePay (OTP) 支付网关,但我无法获得与技术文档中相同的签名

对 google api v3 的 Axios 请求返回加密(?)数据

Axios GET 返回不可读的响应

在mongodb中只查询整数

TypeError:changeChecked 不是函数

当我们有esnext时,为什么我们需要nodenext typescript 编译器选项?

通过 npm 导入 Sass

如何使用 UglifyJS 缩小文件夹中的多个 Javascript 文件?

如何使用 Puppeteer 从输入中删除现有文本?

编写可维护的事件驱动代码

使用 Node.js 和 Express 进行简单的 API 调用

安装Node.js 安装n 安装Node.js?

Meteor - collection.find() 总是返回所有字段

使用 gzip/deflate 压缩的简单 HTTP 请求

在 Node.js 中混合使用 JavaScript 和 TypeScript