小编Jør*_*Vik的帖子

TypeORM 堆栈跟踪未显示我的代码中的错误来源

在我正在进行的一个项目中,偶尔我会遇到一些随机的 TypeORM 错误,这些错误可能很难解决,因为 TypeORM 的堆栈跟踪没有显示我的代码中的错误来源。它只会显示来自 TypeORM NPM 包的堆栈跟踪。

关于如何解决这个问题的任何建议?

以下是最近发生的此类问题的示例

(node:5096) UnhandledPromiseRejectionWarning: QueryFailedError: Error: Invalid usage of the option NEXT in the FETCH statement.
    at new QueryFailedError (/home/myuser/repos/somefolder/my-project/api/src/error/QueryFailedError.ts:9:9)
    at /home/myuser/repos/somefolder/my-project/api/src/driver/sqlserver/SqlServerQueryRunner.ts:223:37
    at /home/myuser/repos/somefolder/my-project/api/node_modules/mssql/lib/base.js:1293:25
    at Request.userCallback (/home/myuser/repos/somefolder/my-project/api/node_modules/mssql/lib/tedious.js:661:15)
    at Request._this.callback (/home/myuser/repos/somefolder/my-project/api/node_modules/tedious/lib/request.js:61:27)
    at Connection.endOfMessageMarkerReceived (/home/myuser/repos/somefolder/my-project/api/node_modules/tedious/lib/connection.js:1944:20)
    at Connection.dispatchEvent (/home/myuser/repos/somefolder/my-project/api/node_modules/tedious/lib/connection.js:1012:38)
    at Parser.<anonymous> (/home/myuser/repos/somefolder/my-project/api/node_modules/tedious/lib/connection.js:812:18)
    at Parser.emit (events.js:310:20)
    at Parser.EventEmitter.emit (domain.js:482:12)
    at Parser.<anonymous> (/home/myuser/repos/somefolder/my-project/api/node_modules/tedious/lib/token/token-stream-parser.js:54:15)
    at Parser.emit (events.js:310:20)
    at Parser.EventEmitter.emit (domain.js:482:12)
    at addChunk (/home/myuser/repos/somefolder/my-project/api/node_modules/readable-stream/lib/_stream_readable.js:291:12)
    at readableAddChunk (/home/myuser/repos/somefolder/my-project/api/node_modules/readable-stream/lib/_stream_readable.js:278:11)
    at Parser.Readable.push (/home/myuser/repos/somefolder/my-project/api/node_modules/readable-stream/lib/_stream_readable.js:245:10)
Run Code Online (Sandbox Code Playgroud)

node.js typescript typeorm

8
推荐指数
1
解决办法
468
查看次数

TypeORM 处理数据库中断

假设我的 MSSQL 服务器崩溃了,我的应用程序客户端从 API 请求了一些东西。现在它只会旋转,直到未答复的请求被 Express 超时。

在 TypeORM 中启用日志记录时,我可以看到相关查询已执行。

我更愿意返回一个 API 响应,通知客户端数据库无法访问。

这是我的用户控制器中的实际代码

public static listAll = async (req: Request, res: Response) => {
    const userRepository = getRepository(User);
    const users = await userRepository
        .find()
    res.send(users);
};
Run Code Online (Sandbox Code Playgroud)

我试图 .catch 正在相关控制器中使用的请求,但似乎没有改变任何东西。请参阅下面的示例。

const users = await userRepository
    .find()
    .catch(error => {
        console.log(error); // this is never triggered
});
Run Code Online (Sandbox Code Playgroud)

控制台中未注销任何错误消息。

这些是我在 TypeORM 中的连接选项

const users = await userRepository
    .find()
    .catch(error => {
        console.log(error); // this is never triggered
});
Run Code Online (Sandbox Code Playgroud)

我还尝试将 createConnection 中的 requestTimeout …

sql-server typescript typeorm

6
推荐指数
1
解决办法
1064
查看次数

如何使用 Apollo 为突变实现 auth 指令?

我正在尝试为我正在处理的项目设置 Apollo 后端,我正在尝试实现模式指令。但是,我无法将我的架构指令添加到突变中。所以我的主要问题是:如何为突变实现 auth 指令?

我已经添加@auth(requires: ADMIN)到我的用户查询的末尾,这工作正常。然后,Apollo 将需要一个具有管理员访问权限的不记名令牌来执行用户查询。

extend type Query {
    user(id: ID!): User
    users: [User!]! @auth(requires: ADMIN)
}
Run Code Online (Sandbox Code Playgroud)

当我尝试以相同的方式对 editMyUser 突变执行此操作时,似乎对所有突变强制执行 auth 指令,而不仅仅是我想要的突变。当我将 @auth 部分添加到 editMyUser 突变时,即使 signUp 突变也会给出“未授权”错误。尽管他们之间没有任何关系。

调用时应该传递给 auth 指令的角色字段注销为空。

extend type Mutation {
    signUp(
        username: String!
        firstName: String
        lastName: String
        password: String!
        isAdmin: Boolean
        isActive: Boolean): User!
    login(
        username: String!
        password: String!): User!
    editMyUser(
        id: ID!
        firstName: String
        lastName: String
        password: String): User! @auth(requires: USER)
    adminEditUser(
        id: ID!
        firstName: String
        lastName: String
        password: …
Run Code Online (Sandbox Code Playgroud)

javascript authentication apollo graphql apollo-server

5
推荐指数
1
解决办法
2317
查看次数

使用multer-s3-transform保留原始文件

如果我要上传图像,除了创建缩略图之外,我还希望 multer s3 保留原始图像。

换句话说。我只想在第一次转换中更改文件名。

下面的代码可以正常工作,但问题是sharp() 修改了原始代码。假设我上传了一个 gif 文件,动画将停止工作。

我试图从原始转换对象中删除转换箭头函数,但这会导致代码崩溃,错误为dest.on is not a function

我已经尝试删除整个转换对象,但由于 shouldTransform 是真实的,它根本不会上传原件。

我试图取代sharp()null,但是这给了我这个错误不能“开”读取属性无效的

根据文档,我应该能够在sharp() 位置输入一个字符串,但这也会使代码崩溃。示例:cb(null, "something.jpeg"); 错误:dest.on 不是函数

关于 multer-s3-transform 的文档有点缺乏,所以我现在只是在暴力破解。

const awsStorage = multerS3({
    s3,
    bucket: process.env.AWS_BUCKET_NAME,
    shouldTransform: (transformReq, file, cb) => {
        cb(null, /^image/i.test(file.mimetype));
    },
    key: (transformReq, file, cb) => {
        const splitFileName = file.originalname.split('.');
        const fileEnding = splitFileName[splitFileName.length - 1];
        cb(null, `files/${dateNow}.${fileEnding}`);
    },
    transforms: [
        {
            id: 'original',
            key: (transformReq, file, cb) …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-s3 node.js multer multer-s3

5
推荐指数
1
解决办法
404
查看次数

无法使用打字稿运行笑话 - “找不到模块‘打字稿’”

我正在尝试使用打字稿运行笑话,但出现以下错误。该项目在 webpack 和 ts-node 中运行良好。由于某种原因,我无法让它与笑话一起工作。

\n
FAIL  src/__tests__/classes/Utils.spec.ts\n\xe2\x97\x8f Test suite failed to run\n\nCannot find module \'typescript\'\n\nRequire stack:\n- /Users/myuser/repos/project/node_modules/ts-jest/dist/config/config-set.js\n- /Users/myuser/repos/project/node_modules/ts-jest/dist/ts-jest-transformer.js\n- /Users/myuser/repos/project/node_modules/ts-jest/dist/index.js\n- /Users/myuser/repos/project/node_modules/@jest/transform/build/ScriptTransformer.js\n- /Users/myuser/repos/project/node_modules/@jest/transform/build/index.js\n- /Users/myuser/repos/project/node_modules/jest-runtime/build/index.js\n- /Users/myuser/repos/project/node_modules/@jest/core/build/cli/index.js\n- /Users/myuser/repos/project/node_modules/@jest/core/build/jest.js\n- /Users/myuser/repos/project/node_modules/jest/node_modules/jest-cli/build/cli/index.js\n- /Users/myuser/repos/project/node_modules/jest/node_modules/jest-cli/bin/jest.js\n- /Users/myuser/repos/project/node_modules/jest/bin/jest.js\n- /usr/local/lib/node_modules/jest/node_modules/import-local/index.js\n- /usr/local/lib/node_modules/jest/bin/jest.js\n
Run Code Online (Sandbox Code Playgroud)\n

笑话配置.js

\n

这是配置。我已经尝试了 root 属性和 moduleNameMapper 的许多变体,但无论我在配置中进行什么更改,错误消息都是完全相同的。

\n
FAIL  src/__tests__/classes/Utils.spec.ts\n\xe2\x97\x8f Test suite failed to run\n\nCannot find module \'typescript\'\n\nRequire stack:\n- /Users/myuser/repos/project/node_modules/ts-jest/dist/config/config-set.js\n- /Users/myuser/repos/project/node_modules/ts-jest/dist/ts-jest-transformer.js\n- /Users/myuser/repos/project/node_modules/ts-jest/dist/index.js\n- /Users/myuser/repos/project/node_modules/@jest/transform/build/ScriptTransformer.js\n- /Users/myuser/repos/project/node_modules/@jest/transform/build/index.js\n- /Users/myuser/repos/project/node_modules/jest-runtime/build/index.js\n- /Users/myuser/repos/project/node_modules/@jest/core/build/cli/index.js\n- /Users/myuser/repos/project/node_modules/@jest/core/build/jest.js\n- /Users/myuser/repos/project/node_modules/jest/node_modules/jest-cli/build/cli/index.js\n- /Users/myuser/repos/project/node_modules/jest/node_modules/jest-cli/bin/jest.js\n- /Users/myuser/repos/project/node_modules/jest/bin/jest.js\n- /usr/local/lib/node_modules/jest/node_modules/import-local/index.js\n- /usr/local/lib/node_modules/jest/bin/jest.js\n
Run Code Online (Sandbox Code Playgroud)\n

tsconfig.json

\n
module.exports = {\n  preset: \'ts-jest\',\n  testEnvironment: \'node\',\n  roots: [\'<rootDir>/src\'],\n  transform: {\n    \'^.+\\\\.tsx?$\': \'ts-jest\',\n  },\n …
Run Code Online (Sandbox Code Playgroud)

node.js typescript jestjs ts-jest

5
推荐指数
1
解决办法
2万
查看次数

TypeORM + Webpack causes SyntaxError: Unexpected token for entity file

I have set up a pretty plain project with express, node.js and webpack. After installing TypeORM when configuring webpack.config.js it triggers unexpected token error for User.ts in entity folder.

The problem seems to be related to the fact that ormconfig.json is referring to .ts entity files.

Solution in similar threads seems to be using ts-node with some extra parameters, but I am using webpack in this project and executing the bundle file.

index.ts

import 'reflect-metadata';
import { createConnection } from …
Run Code Online (Sandbox Code Playgroud)

node.js typescript webpack typeorm

3
推荐指数
1
解决办法
2176
查看次数