标签: ts-node

扩展 Typescript 中的内置类型

我有以下结构:

project
 |- types
    |- global.d.ts
    |- string.d.ts
    |- wdio.d.ts
 |- src
    |- Models
    |- Resources
    |- Components
    |- Extensions
       |- string.ts
    |- ...
 |- tsconfig.json
 |- wdio.conf.js
Run Code Online (Sandbox Code Playgroud)

我尝试用函数扩展字符串的原型。到目前为止我尝试了很多方法,我在几个网站上找到了。但要么tsc给我错误,要么 PHPStorm 显示错误消息。

project
 |- types
    |- global.d.ts
    |- string.d.ts
    |- wdio.d.ts
 |- src
    |- Models
    |- Resources
    |- Components
    |- Extensions
       |- string.ts
    |- ...
 |- tsconfig.json
 |- wdio.conf.js
Run Code Online (Sandbox Code Playgroud)

我将类的增强添加String到 d.ts 文件中。然后我在一个单独的文件中定义函数的主体。当我在文件中实现它时src/Extensions/string.ts,该tsc命令没有给出错误消息,但 PHPStorm 显示以下错误:

TS2339: Property 'myCustomFn' does not exist on type 'String'. …

javascript typescript webdriver-io ts-node typescript3.0

4
推荐指数
1
解决办法
5258
查看次数

如何修复语法错误:无法在模块外部使用 import 语句?

我对这一切都很陌生,我正在尝试将 Node + Typescript 后端添加到我的 Angular 项目中。但是导入express后总是报错。

[ERROR] SyntaxError: Cannot use import statement outside a module.
Run Code Online (Sandbox Code Playgroud)

包.json

{
  "name": "server",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "serve": "ts-node-dev server.ts",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@types/express": "^4.17.11",
    "express": "^4.17.1",
    "ts-node": "^9.1.1",
    "ts-node-dev": "^1.1.6",
    "tslint": "^6.1.3",
    "typescript": "^4.2.4"
  },
}
Run Code Online (Sandbox Code Playgroud)

tsconfig.json

{
  "compilerOptions": {
    "target": "ESNEXT",                                
    "module": "commonjs", 
    "strict": false, 
    "esModuleInterop": true, 
    "skipLibCheck": true,                          
    "forceConsistentCasingInFileNames": true        
  } …
Run Code Online (Sandbox Code Playgroud)

express typescript ts-node

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

带有 ts-node 的工作线程

我计划为 socket.io 房间提供工作线程。我在与房间的第一个连接上创建一个工作线程,然后设置 firebase 侦听器。

很遗憾。我在工作文件和我的主要源代码中有常见的导入。

我按照这篇文章允许通过worker_threads运行ts文件 - > https://wanago.io/2019/05/06/node-js-typescript-12-worker-threads/

不幸的是,我没有得到顶级等待,并且在启动工作线程时,出现以下错误。 error TS2451: Cannot redeclare block-scoped variable 'tslib_1'.\r\n"

这是我的 tsconfig.json

{
  "compilerOptions": {
    "target": "esnext",
    "lib": ["esnext"],
    "module": "commonjs",
    "importHelpers": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "moduleResolution": "node",
    "baseUrl": ".",
    "sourceMap": true,
    "declaration": false,
    "noImplicitAny": false,
  },
  "files": [
    "typings.d.ts"
  ],
}
Run Code Online (Sandbox Code Playgroud)

worker-thread node.js typescript ts-node

4
推荐指数
1
解决办法
7503
查看次数

获取类型为“string |”的参数 使用环境变量时,“未定义”不可分配给“字符串”类型的参数

我不确定你们中是否有人遇到过同样的问题,但我遇到了ts-node环境变量的问题,非常感谢您的帮助!

\n

我在这里尝试做的基本上只是与index.ts一起运行ts-node。这index.ts只是打印出环境变量之一。

\n

索引.ts:

\n
import "dotenv/config";\n\nconst printEnv = (value: string) => {\n  console.log(value);\n};\n\nprintEnv(process.env.PASSWORD);\n
Run Code Online (Sandbox Code Playgroud)\n

为了使环境变量可以从 中使用index.ts,我创建了env.d.ts一个定义变量类型的变量。

\n

环境.d.ts:

\n
declare global {\n  namespace NodeJS {\n    interface ProcessEnv {\n      PASSWORD: string;\n    }\n  }\n}\nexport {}\n
Run Code Online (Sandbox Code Playgroud)\n

我设置了我的tsconfig.json,package.json.env文件,如下所示。

\n

tsconfig.json:

\n
{\n  "name": "ts-env",\n  "version": "1.0.0",\n  "main": "index.js",\n  "license": "MIT",\n  "scripts": {\n    "start": "nodemon src/index.ts"\n  },\n  "devDependencies": {\n    "@types/node": "^18.6.1",\n    "nodemon": "^2.0.19",\n    "ts-node": …
Run Code Online (Sandbox Code Playgroud)

javascript node.js typescript ts-node

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

为什么 HTMLInputElement 的 list 字段只有 getter,没有 setter?

我正在 Typescript 中创建一个 HTMLInputElement,我打算通过将输入元素的type字段设置为 来将其用作“滑块” "range"

根据 MDN Web Docs,我可以通过创建 HTMLDatalistElement 的实例、为数据列表提供并通过滑块的字段id引用数据列表来使该滑块更加精美。这不仅会给我的滑块一些刻度线来表示滑块光标当前所在的位置,而且我还可以设置数据列表的 HTMLOptionElement字段来引入带标签的刻度线。idlistlabel

来源:https ://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/range#adding_labels

然而,Deno/TS-Node 抱怨这个错误:

error: TS2540 [ERROR]: Cannot assign to 'list' because it is a read-only property.
      inputElement.list = datalistId;
Run Code Online (Sandbox Code Playgroud)

谷歌浏览器抱怨这个错误:

Uncaught TypeError: Cannot set property list of #<HTMLInputElement> which has only a getter
Run Code Online (Sandbox Code Playgroud)

由于 MDN Web 文档清楚地表明该字段是要使用的,因此我尝试通过以下方式忽略 Deno/TS-Node 错误来消除它:

// @ts-ignore
Run Code Online (Sandbox Code Playgroud)

该解决方案不起作用,并导致上述 Google Chrome 运行时错误。

我不明白为什么在通过文件构造 HTMLInputElement 时允许设置此字段.html,但在通过 Javascript/Typescript 动态创建 HTMLInputElement 实例时不允许使用它。能够动态设置滑块的刻度线标签会非常好。

html javascript typescript ts-node deno

4
推荐指数
1
解决办法
150
查看次数

是否可以在 package.json bin 中使用本地安装的 ts-node?

如何使用全局包安装通过 ts-node 运行 ts 文件?例如,我有我想发布的打字稿应用程序,并将其用作全局包。

在 package.json 文件中有一个 bin 属性,我们可以在其中指定可执行文件的命令,安装后将设置到 PATH 变量中。

在.js文件的情况下,没有问题。您只需要在 bin 中指定所需的文件。

js文件

安装后,脚本会出现,使用我们在 bin 中指定的命令启动我们的应用程序。从截图来看,node.exe 使用了我们的 js。文件作为参数

结果

但是如何对 ts. 填充?我可以使用安装在本地 node_modules 中的 ts-node 运行 ts 文件

运行

但是我不能用 bin 属性来做到这一点。下面的屏幕截图会导致错误。

错误

需要链接到可执行文件。但就其本身而言。没有 ts-node 无法执行。

是否可以在 bin 中指定 ts. 文件需要通过ts-node?或者在没有全局安装ts-node的情况下解决这个问题?

typescript ts-node

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

ts-node 找不到模块打字稿

我正在 AWS 上部署一个 dockerized typescript 应用程序。当我运行应用程序容器时,我收到一个 ts-node 错误Error: Cannot find module 'typescript',我不清楚,因为它typescript被定义为 devDependency。这些是我的package.json依赖项

{
 "name": "app-server",
 "version": "0.0.0",
 "description": "description",
 "author": "Marcello Bardus",
 "license": "MIT",
 "scripts": {
   "build": "tsc -p tsconfig.build.json",
   "format": "prettier --write \"src/**/*.ts\"",
   "start": "ts-node -r tsconfig-paths/register src/main.ts",
   "start:dev": "nodemon",
   "start:debug": "nodemon --config nodemon-debug.json",
   "prestart:prod": "rimraf dist && tsc",
   "start:prod": "node dist/main.js",
   "lint": "tslint -p tsconfig.json -c tslint.json",
   "test": "jest",
   "test:watch": "jest --watch",
   "test:cov": "jest --coverage",
   "test:debug": "node --inspect-brk -r tsconfig-paths/register -r …
Run Code Online (Sandbox Code Playgroud)

typescript docker package.json ts-node nestjs

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

mocha 和 ts-node 找不到本地 .d.ts 文件

我有以下项目结构

|_typetests
|          |_type.test.ts
|
|
myproj.d.ts
tsconfig.json
Run Code Online (Sandbox Code Playgroud)

我的 tsconfig.json 看起来像这样:

{
  "compilerOptions": {
      "module": "commonjs",
      "moduleResolution": "node",
      "lib": [
          "es6"
      ],
      "target": "es6",
      "noImplicitAny": true,
      "noImplicitThis": true,
      "strictNullChecks": true,
      "types": [
          "node",
          "mocha"
      ],
      "noEmit": true,
      "forceConsistentCasingInFileNames": true,
      "baseUrl": "./"
  },
  "include": [
      "types/*.test.ts"
  ],
  "exclude": ["node_modules"]
}
Run Code Online (Sandbox Code Playgroud)

如果我跑 ./node_modules/.bin/tsc -p . --traceResolution

然后我可以看到:

模块名称“myproj”已成功解析为“/Users/paulcowan/projects/myproj/myproj.d.ts”。========

但是当我通过 mocha 运行以下内容时

./node_modules/.bin/mocha -r ts-node/register types/*.test.ts
Run Code Online (Sandbox Code Playgroud)

Error: Cannot find module 'myproj'

mocha.js typescript ts-node

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

是否有任何选项可以使用 tsc 或 ts-node 或其他任何东西更快地编译和运行 ts 代码?

目前我们有客户端服务器应用程序(用于竞争编码目的),客户端点击编译和运行并将 ts 代码发送到服务器,其中 ts 代码存储在一个文件中,并在服务器上使用测试用例在本地运行,并通过测试用例将输出返回给客户端通过/结果失败。但是运行 ts 文件非常慢,而且这需要很多时间。

我在 transpileonly 模式下使用 ts-node 在服务器中本地编译和运行文件。

例如。npx ts-node -T tsFileName.ts

我们的要求是针对 ts 代码的编译和运行时间。

performance online-compilation typescript ts-node

3
推荐指数
4
解决办法
5411
查看次数

“意外的标记 。” 使用可选更改“?”时 运行 mocha 时的语法

我正在玩 TS 并在尝试为我的代码运行测试时遇到错误。我有以下一段代码:

return this._map.get(y)?.get(x)
Run Code Online (Sandbox Code Playgroud)

当我运行浏览器的代码时,一切正常。mocha但是,当我使用 运行测试时,它会引发错误:

        return this._map.get(y)?.get(x);        
                                ^

SyntaxError: Unexpected token .
Run Code Online (Sandbox Code Playgroud)

从我设法阅读的内容来看,我应该tsc为 NodeJS 环境进行不同的配置以使其正常工作,但我的印象是它更多地是关于模块解析而不是语法。是不是我需要升级到任何特定的 NodeJS 版本?我已经尝试过 Node 10 到 13,但都没有奏效。我错过了什么?

mocha.js typescript ts-node

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