我在文件data.ts
中有此架构
import mongoose from "mongoose";
const Schema = mongoose.Schema;
const DataSchema = new Schema(
{
id: Number,
message: String,
},
{ timestamps: true }
);
module.exports = mongoose.model('Data', DataSchema);
当我尝试将其导入到index.js中时:
const Data = require('./data');
我一直看到此错误:
internal/modules/cjs/loader.js:584
throw err;
^
Error: Cannot find module './data'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:582:15)
at Function.Module._load (internal/modules/cjs/loader.js:508:25)
at Module.require (internal/modules/cjs/loader.js:637:17)
任何想法为什么会这样。
我尝试做:
export const data = mongoose.model('Data', DataSchema);
然后使用import { data as Data } from './data'
但这还会返回以下错误:
import { data as Data } from './data'
^
SyntaxError: Unexpected token {
at new Script (vm.js:80:7)
at createScript (vm.js:274:10)
at Object.runInThisContext (vm.js:326:10)
at Module._compile (internal/modules/cjs/loader.js:664:28)
答案 0 :(得分:1)
使用ts-node
直接运行您的TypeScript文件
npm install --dev ts-node
使用以下命令启动节点进程:
node -r ts-node/register index.ts
确保您的package.json
包含以下内容:
{
"dependencies": {
"mongoose": "^5.6.10",
"typescript": "^3.5.3"
},
"devDependencies": {
"ts-node": "^8.3.0"
}
}
TypeScript
实际上是JavaScript的超集(不是子集)。
.ts
文件必须先编译为JavaScript,然后才能在任何JavaScript环境(NodeJS,浏览器等)上运行。
通常在TypeScript项目中,我们在build
中有一个package.json
命令,该命令会将您的.ts
文件编译成.js
文件,然后跟一个start
命令使用已编译的js
文件启动节点进程:
{
"scripts": {
"build": "tsc index.ts",
"start": "node index.js",
"start:dev": "node -r ts-node/register index.ts"
}
}
.ts
文件。答案 1 :(得分:0)
如果您使用的是打字稿,请尝试这样导入:
从“ ./Data”导入{Data};
let myData = new Data();
答案 2 :(得分:-1)
您需要像这样导出模型,
const Data = mongoose.model('Data', DataSchema);
export default Data;
并且可以将其导入任何文件中,例如
import Data from "./Data";