Saya memiliki aplikasi node app.js. Saat file ini mulai tumbuh, saya ingin memindahkan beberapa bagian kode di beberapa file lain yang akan "saya perlukan" atau "sertakan" di file app.js.
Saya mencoba hal-hal seperti:
// 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');
di car.js:
// Define Car model
CarSchema = new Schema({
brand : String,
type : String
});
mongoose.model('Car', CarSchema);
Saya mendapat kesalahan:
ReferenceError: Schema is not defined
Saya hanya ingin memuat konten car.js (alih-alih memuat semuanya di file app.js yang sama) Apakah ada cara khusus untuk melakukan ini di node.js?
javascript
node.js
Luc
sumber
sumber
Jawaban:
Menekankan apa yang orang lain katakan
var foo
di tingkat atas tidak menciptakan variabel global. Jika Anda menginginkan variabel global, tulisglobal.foo
. tapi kita semua tahu global itu jahat.Jika Anda adalah seseorang yang menggunakan global seperti itu dalam proyek node.js yang saya ikuti, saya akan merefaktornya karena hanya ada sedikit kasus penggunaan untuk ini (Ada beberapa pengecualian tetapi ini bukan satu).
di car.js
sumber
return {models: {car: CarModel, dealer: CarDealer}, carStuff: carStuff}
Jawaban yang benar biasanya menggunakan Requirement, tetapi dalam beberapa kasus hal itu tidak memungkinkan.
Kode berikut akan melakukan triknya, tetapi gunakan dengan hati-hati:
sumber
#include
?Jawaban singkat:
sumber
Cannot find module lib.js
.require('./lib.js').your_function()
Anda bisa meletakkan
di bagian atas file car.js Anda agar berfungsi, atau Anda dapat melakukan apa yang dikatakan Raynos.
sumber
Jika Anda hanya ingin menguji pustaka dari baris perintah, Anda dapat melakukan:
sumber
Pendekatan ini berfungsi untuk saya di Node.js, Apakah ada masalah dengan yang ini ?
File 'include.js':
File 'main.js':
sumber