为什么webpack在导入索引文件时不包含构建中的node_module库?
webpack对我来说仍然是一种黑色艺术,我还没有完全掌握,所以下面是我想要实现的解释.
我正在构建一个测试应用程序,以在AWS Lambda节点服务器上作为无服务器代码运行.目标是通过在服务器上具有一个或多个块并且没有node_modules文件夹来使部署包尽可能小.
我正在使用Typescript v3编写并使用webpack v4为服务器创建一个包.
这是我的目录结构:
这是我的package.json的摘录
"dependencies": {
"moment": "^2.22.2"
},
"devDependencies": {
"@types/aws-lambda": "^8.10.15",
"@types/node": "^10.12.2",
"awesome-typescript-loader": "^5.2.1",
"aws-lambda": "^0.1.2",
"source-map-loader": "^0.2.4",
"ts-node": "^7.0.1",
"tslint": "^5.11.0",
"tslint-loader": "^3.5.4",
"typescript": "^3.1.6",
"webpack": "^4.25.1",
"webpack-bundle-analyzer": "^3.0.3",
"webpack-cli": "^3.1.2",
"webpack-node-externals": "^1.7.2"
}
Run Code Online (Sandbox Code Playgroud)
我想要捆绑的index.ts:
import { Handler } from "aws-lambda";
import moment from "moment";
const handler: Handler = async ( event: any ) => {
const stamp = moment().format( "x" ); …Run Code Online (Sandbox Code Playgroud) 我需要使用 jest v24+ 创建打字稿类的模拟实现。我特别尝试创建一个模拟类,该类被注入到构造函数中,并模拟将被调用以返回特定响应的函数。
如何为每个测试创建模拟?
更多信息:
我已经开始了一个新项目,现在使用 jest v24,它在编写测试时产生了一个我无法解决的问题。
将下面的示例与 jest v23 一起使用,以前我可以模拟 Randomiser 类,如下所示:
const Mock = jest.fn<Randomiser>(() => ({
getRandom: jest.fn().mockReturnValue(10)
}));
Run Code Online (Sandbox Code Playgroud)
这将成功编译和构建。
从 v24 开始, fn 函数采用并添加泛型,<T, Y extends any[]>我不知道这是否与行为变化相关,但现在我收到错误:
类型 '{ getRandom: Mock; 中缺少属性 'rand' }' 但在“Randomiser”类型中是必需的。ts(2741)
import "jest";
class Randomiser {
public getRandom(): number {
return this.rand();
}
private rand(): number {
return Math.random();
}
}
class Multiplier {
private randomiser: Randomiser;
constructor(randomiser: Randomiser) {
this.randomiser = randomiser;
}
multiplyRandom(factor: number): number { …Run Code Online (Sandbox Code Playgroud)