После компиляции кода с помощью babel свойство не существует - PullRequest
0 голосов
/ 11 июня 2018

У меня есть файл, расположенный в models / user.js со следующим содержимым:

import { mongoose } from '../index.js'

var userSchema = mongoose.Schema({
    email: String, // Self-explanatory
    password: String, // This will be a bcrypt hash
    name: String,
    verified: Boolean
})

export var User = mongoose.model('User', userSchema)

Babel компилирует его в ES5, что дает:

'use strict';

Object.defineProperty(exports, "__esModule", {
    value: true
});
exports.User = undefined;

var _index = require('../index.js');

var userSchema = _index.mongoose.Schema({
    email: String, // Self-explanatory
    password: String, // This will be a bcrypt hash
    name: String,
    verified: Boolean
});

var User = exports.User = _index.mongoose.model('User', userSchema);

In index.js,У меня есть это требование для mongoose

export const mongoose = require('mongoose')

, и Babel преобразует это в

var mongoose = exports.mongoose = require('mongoose');

Это все выглядит хорошо для меня, но всякий раз, когда я запускаю свой (скомпилированный с помощью Babel) кодЯ получаю сообщение об ошибке, сообщающее, что _index.mongoose.Schema не может быть найдено, что не имеет смысла, потому что все выглядит так, как будто оно правильно связано.index.js находится в правильном месте относительно user.js

Действительно странная вещь заключается в том, что у меня есть своего рода «шаблон проекта», который я использую при создании типа проекта, которым я являюсь, и все компилируется(с этим, по сути, одним и тем же кодом) совершенно нормально.

Есть идеи?

1 Ответ

0 голосов
/ 12 июня 2018

Я не смог решить начальную проблему, но @NeilLunn предоставил отличный обходной путь.Вместо того, чтобы пытаться импортировать модуль из моего index.js, потому что Node обнаруживает модуль только один раз, вы можете просто импортировать его (так же, как вы делали это в index.js) во вторичном файле.

...