我有一个位于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);
在index.js
中,我对mongoose
export const mongoose = require('mongoose')
并且Babel将其转换为
var mongoose = exports.mongoose = require('mongoose');
这一切对我来说都很好看,但每当我运行我的(通过Babel编译)代码时,我都会收到错误,告诉我_index.mongoose.Schema无法找到,这没有任何意义因为一切看起来都很合适。 index.js
位于相对于user.js
真正奇怪的是我有一个"项目模板"我在创建项目类型时使用,并且所有内容编译(使用基本相同的代码)完全正常。
有什么想法吗?
答案 0 :(得分:0)
我无法解决最初的问题,但是@NeilLunn提供了一个很好的解决方法。而不是尝试从我的template <typename T>
class C
{
public:
C()
{
std::cout << "C constructed." << std::endl;
std::cout << name() << std::endl;;
}
constexpr const char* name();
};
template <> constexpr const char * C<A>::name() { return "You got an A."; }
template <> constexpr const char * C<B>::name() { return "You got a B."; }
导入模块,因为Node只撤消一次模块,你可以在辅助文件中导入它(与你在index.js中的操作相同)。