gpt4 book ai didi

node.js - 如何在 Node 迁移中使用 Typescript 作为编译器

转载 作者:搜寻专家 更新时间:2023-10-30 21:17:25 24 4
gpt4 key购买 nike

首先,这是我的迁移脚本:

const bluebird = require("bluebird");
const mongoose = require("mongoose");
mongoose.Promise = bluebird;
mongoose.connect("mongodb://localhost:27017/app", { useMongoClient: true });

const schema = {
uid: {
type: String,
},

parentID: {
type: String,
},

name: {
type: String,
},

displayName: {
type: String,
},

createdAt: {
type: Date,
},

modifiedAt: {
type: Date,
}
};

const FolderSchema = new mongoose.Schema(schema);
const FolderModel = mongoose.model("folders", FolderSchema);


// initial folders
const folders = [
{ uid: "", parentID: "", name: "folder1", displayName: "Folder 1" },
{ uid: "", parentID: "", name: "folder2", displayName: "Folder 2" },
];

function up(next) {
const promises = [];
folders.map((folder, index) => {
promises.push(FolderModel.create(folder));
});

bluebird.all(promises).then((res) => {
mongoose.connection.close();
next();
});
}

function down(next) {
const promises = [];
folders.map((folder, index) => {
promises.push(FolderModel.remove({ name: folder.name }));
});

bluebird.all(promises).then((res) => {
next();
});
}

module.exports.up = up;
module.exports.down = down;

我正在使用 node-migrate对于迁移和高级迁移创建部分,它说:

最后,如果你想使用更新的 ECMAscript 特性,或者像 TypeScript 这样的语言插件,对于您的迁移,您可以使用编译器标志。

但是当我使用 --compiler="ts:typescript" 运行脚本时,它总是会抛出错误,即使我已经安装了 typescript。

    C:\Users\john\Workspace\app\node_modules\migrate\lib\register-compiler.js:12
require(mod)({
^

TypeError: require(...) is not a function
at registerCompiler (C:\Users\john\Workspace\app\node_modules\migrate\lib\register-compiler.js:12:15)
at Object.<anonymous> (C:\Users\john\Workspace\app\node_modules\migrate\bin\migrate-up:57:3)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Function.Module.runMain (module.js:676:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3

最佳答案

您可以执行以下操作使 ts-nodenode-migrate 一起工作。

  1. 创建一个简单的 js 文件,包含:

    const tsNode = require('ts-node');

    module.exports = tsNode.register;
  2. 执行迁移时将编译器标志与上述文件一起传递:

    向上迁移 --compiler="ts:./typescript-compiler.js"

这应该足以让您运行 TypeScript 迁移。

关于node.js - 如何在 Node 迁移中使用 Typescript 作为编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49031585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com