node.js - 如何在 Javascript 文件中导入 Typescript 文件并在使用前解释其内容?
问题描述
我正在用 Typescript 编写一个 Node 应用程序,但我的 Cucumber 测试是用 Javascript 编写的。我的问题:如果我有一个 Typescript 文件:
import { Request, Response } from "express";
import checkCredentials from "./components/member/check-member-credentials";
import findMemberByEmail from "./components/member/find-member-by-email";
export default async (req: Request, res: Response) => {
const memberByEmail = await findMemberByEmail(req.body.password);
if (memberByEmail.error) {
return res.status(401).json({ message: "not found" });
}
const isMatch = await checkCredentials(
memberByEmail.member.password,
req.body.password,
);
if (isMatch) {
return res.status(200).json({ message: "logged in" });
}
return res.status(401).json({ message: "not auth" });
};
我正在尝试将其导入 Cucumber 测试的上下文文件中:
require('../../../../src/controllers/login.ts');
我得到典型的 js 错误:
import { Request, Response } from "express";
^
SyntaxError: Unexpected token {
我尝试使用一个库typescript-require
并在导入之前需要它(如其文档中所示):
require('typescript-require');
const login = require("../../../../src/controllers/login.ts");
但我仍然收到错误:
> NODE_ENV=development ./node_modules/.bin/cucumber-js test
src/controllers/components/member/check-member-credentials.ts(1,25): error TS2307: Cannot find module 'bcryptjs'.
src/controllers/components/member/check-member-credentials.ts(4,3): error TS2304: Cannot find name 'Promise'.
src/controllers/components/member/find-member-by-email.ts(1,16): error TS2307: Cannot find module '../../../db/models/index.js'.
src/controllers/components/member/find-member-by-email.ts(4,2): error TS2304: Cannot find name 'Promise'.
src/controllers/login-test.ts(1,35): error TS2307: Cannot find module 'express'.
src/controllers/login-test.ts(5,16): error TS1057: An async function or method must have a valid awaitable return type.
src/controllers/login-test.ts(11,25): error TS2346: Supplied parameters do not match any signature of call target.
src/controllers/login-test.ts(13,22): error TS1009: Trailing comma not allowed.
Fatal Error. Unable to compile TypeScript file. Exiting.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! my-basic-fit-v2@1.0.0 e2etest: `NODE_ENV=development ./node_modules/.bin/cucumber-js test`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the my-basic-fit-v2@1.0.0 e2etest script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/ali.atrash/.npm/_logs/2019-07-08T14_53_57_742Z-debug.log
还有其他解决方案吗?
解决方案
推荐阅读
- ruby-on-rails - Different access name for same model in Ember
- mysql - SQL query return name field from tableA and name field from tableB match with id but tableB doesn't have name field
- c++ - Is there a cost difference between returning a function by reference vs passing the object through a void function?
- rust - How do I integrate a fork of one of the crates I'm using into my project?
- angular - Angular: how to resize Search Filter Pipe
- android - Implementation of library giving duplicate error
- ruby-on-rails - Authorization header is invalid -- one and only one ' ' (space) required in S3 File while accessing
- powerbi - 如何根据两列在 Power BI 中生成排名
- python - 计算大型复合形状中单位三角形的算法
- apache-atlas - 样条火花代理罐在后处理过程中出现错误