首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypeScript:开发环境中“逗号运算符的左侧未使用且没有副作用”错误

TypeScript:开发环境中“逗号运算符的左侧未使用且没有副作用”错误
EN

Stack Overflow用户
提问于 2021-09-20 12:14:59
回答 1查看 4.3K关注 0票数 4

问题

当我试图用npm run dev:server启动我的开发环境时,我得到了以下错误:

代码语言:javascript
运行
复制
return new TSError(diagnosticText, diagnosticCodes);
           ^
TSError: ⨯ Unable to compile TypeScript:
src/routes/snippets.ts:6:26 - error TS2695: Left side of comma operator is unused and has no side effects.

6 exports.snippetRouter = (0, express_1.Router)();

然后服务器崩溃。但是,当我运行npm run build项目时,编译时不会出现任何错误。然后,我可以运行node build/server.js,一切都按其应有的方式工作。我在编辑器中也没有收到任何错误或警告。

我寻找类似的错误,但找不到符合我的情况。

有什么想法我能想办法解决吗?

还值得一提的是,如果我从server.ts中注释/删除server.ts行并运行npm run dev:server,一切都正常工作(当然,除了缺少的功能)。

项目

项目结构:

代码语言:javascript
运行
复制
src
├── controllers
|   └── snippets.ts
├── middleware
│   ├── index.ts
|   └── asyncWrapper.ts
├── routes
|   └── snippets.ts
└── server.ts

controllers/snippets.ts

代码语言:javascript
运行
复制
import { Request, Response, NextFunction } from 'express';
import { asyncWrapper } from '../middleware';

export const createSnippet = asyncWrapper(
  async (req: Request, res: Response, next: NextFunction): Promise<void> => {
    res.status(201).json({
      data: "test msg"
    });
  }
);

middleware/asyncWrapper.ts

代码语言:javascript
运行
复制
import { Request, Response, NextFunction } from 'express';

type Foo = (req: Request, res: Response, next: NextFunction) => Promise<void>;

export const asyncWrapper =
  (foo: Foo) => (req: Request, res: Response, next: NextFunction) => {
    return Promise.resolve(foo(req, res, next)).catch(next);
  };

routes/snippets.ts

代码语言:javascript
运行
复制
import { Router } from 'express';
import { createSnippet } from '../controllers/snippets';

export const snippetRouter = Router();

snippetRouter.route('/').post(createSnippet);

server.ts

代码语言:javascript
运行
复制
import express from 'express';
import { snippetRouter } from './routes/snippets';

const app = express();
app.use('/api/snippets', snippetRouter);

app.listen(5000, () => {
  console.log('Server is working');
});

package.json

代码语言:javascript
运行
复制
{
  "name": "snippet-hub",
  "version": "1.0.0",
  "description": "",
  "main": "src/server.ts",
  "scripts": {
    "init:client": "npm install --prefix=client",
    "init:server": "npm install",
    "init": "npm-run-all -n init:**",
    "dev:client": "npm start --prefix=client",
    "dev:server": "nodemon src/server.ts",
    "dev": "npm-run-all -n --parallel dev:**",
    "build:clear": "rm -rf build",
    "build:tsc": "tsc",
    "build": "npm-run-all -n build:**"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@types/express": "^4.17.13",
    "@types/node": "^16.9.2",
    "@types/validator": "^13.6.3",
    "nodemon": "^2.0.12",
    "npm-run-all": "^4.1.5",
    "ts-node": "^10.2.1",
    "typescript": "^4.4.3"
  },
  "dependencies": {
    "dotenv": "^10.0.0",
    "express": "^4.17.1",
    "sequelize": "^6.6.5",
    "sqlite3": "^5.0.2",
    "umzug": "^3.0.0-beta.16"
  }
}

tsconfig.json

代码语言:javascript
运行
复制
{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "outDir": "./build",
    "rootDir": "./src",
    "strict": true,
    "noImplicitAny": false,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src"]
}
EN

Stack Overflow用户

发布于 2022-01-29 09:19:02

我也犯了同样的错误,我是如何修复它的,就是导入express,而不是破坏它的结构,然后从express调用路由器。将文件routes/snippets.ts调整到以下,解决了问题

代码语言:javascript
运行
复制
import express from 'express';
export const snippetRouter = express.Router();

snippetRouter.route('/').post(createSnippet);

上面解决了这个问题

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69254254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档