所以我的模块是这样写的
import mongoose from 'mongoose';
export class MyModule {
constructor(){
//do
}
create(str){
mongoose.connect(str); //cannot find property 'connect' of undefined
}
}
使用导入语法时,出现cannot find property 'connect' of undefined
错误;在使用require时可以正常工作。
很奇怪,通过导入语法导入单个属性的工作符合预期,
import { connect } from 'mongoose'
但是出于某些其他原因,我需要访问整个ORM。
为什么会这样?难道我做错了什么?公平地说,我在ES6模块系统,TypeScript和Node.js方面没有太多经验,所以我可能在这里缺少一些东西。
我正在使用NestScript在打字稿文件上的Node.js上运行它。
答案 0 :(得分:2)
您可以在LD_LIBRARY_PATH
文件中进行设置
tsconfig.json
这将允许您使用语法
"allowSyntheticDefaultImports": true,
"esModuleInterop": true
答案 1 :(得分:1)
在安装@types/mongoose
之后,VS Code报告猫鼬没有默认情况下的导出(均被命名为exports),
import mongoose from `mongoose`
不起作用。这也解释了为什么获取单个属性的原因:
import { connect } from `mongoose`
作为一种解决方法,感谢@Binit Ghetiya在此线程中首次提到它,您应该改为这样做:
import * as mongoose from `mongoose`
将Mongoose的每个命名出口编译到变量mongoose
中。
答案 2 :(得分:1)
我们总共可以使用2个Syntex。
from featuretools.primitives import make_agg_primitive
from featuretools.variable_types import Variable
from featuretools.variable_types import Numeric
import pandas as pd
import featuretools as ft
class List(Variable):
type_string = "list"
def sum_list(values):
return sum(values,[])
SumList = make_agg_primitive(function = sum_list,
input_types = [List],
return_type = [List],
description="length of a list related instance")
# Create a simple entityset containing list data
data = pd.DataFrame({"id": [1, 2, 3],
"products1": [1, 2, 3] })
inp = [{'id':1, 'products':['a', 'b', 'c','a']}, {'id':1,'products':['a','c','c','a']}, {'id':2,'products':['a','c','c','a']}]
df = pd.DataFrame(inp)
es = ft.EntitySet(id="data")
es = es.entity_from_dataframe(entity_id="customers",
dataframe=data,
index="id")
es = es.entity_from_dataframe(entity_id="customers1",
dataframe=df,
index="id1",
make_index=True,
variable_types={
'products': List # Use the custom List type
})
r_A_B = ft.Relationship(es['customers']['id'], es['customers1']['id'])
es = es.add_relationship(r_A_B)
feature_matrix, features = ft.dfs(entityset=es,
target_entity="customers",
agg_primitives=[SumList],
trans_primitives=[])
然后使用 mongoose.connect
id products
1 [a, b, c, a, c, c, a]
2 [a, c, c, a]`
然后使用 mongoose.connect
const mongoose = require('mongoose');
然后直接使用连接
答案 3 :(得分:0)
只需按以下步骤更改导入:
import * as mongoose from 'mongoose';
以下是示例:
import * as mongoose from 'mongoose';
export class MyModule {
constructor(){
//do
}
create(str){
mongoose.connect(str);
}
}