标签: ts-node

使用 ts-node 部署 Heroku

我正在尝试在 Heroku 中部署一个Angular Universal Starter示例。

任务npm start失败,因为它无法识别 ts-node。

有没有办法使用 ts-node 在 Heroku 上进行部署?

heroku angular-universal ts-node angular

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

尝试将 vue 与 ts-node 一起使用

我已经很乐意在服务器端代码中导入 .vue 文件。深入地说,我还没有真正使用 *.vue 文件导出,但有些代码对于客户端和服务器端来说是常见的,并引用这些文件。

我现在使用 ts-node 进行开发/调试,并使用 webpack 将客户端代码与 *.vue 文件捆绑在一起。

我尝试了很多解决方案,但发现没有一个真正有效 - 即使是 tsConfig.json 中引用的 .d.ts

declare module '*.vue' {
    import Vue = require('vue')
    const value: Vue.ComponentOptions<Vue>
    export default value
}
Run Code Online (Sandbox Code Playgroud)

有谁知道一个优雅的解决方案,或者我应该辞职而在服务器端使用 webpack 吗?(我有些犹豫,因为仅客户端编译的编译已经很慢了)

javascript node.js typescript vue.js ts-node

7
推荐指数
1
解决办法
503
查看次数

TypeScript ES动态`import()`

在使用新的TypeScript功能(即所谓的ES Dynamic Imports)时,我无法使用服务器端运行我的同构应用程序的代码ts-node.

使用webpack模块加载器时,似乎没有出现错误,该加载器以自己的方式转换代码并在浏览器中运行生成的文件.

我得到的错误:

case 0: return [4 /*yield*/, import("./component/main")];
                             ^^^^^^
SyntaxError: Unexpected token import
Run Code Online (Sandbox Code Playgroud)

通常TypeScript将import表达式转换为类似的东西:Promise.resolve(require("./component/main"))但我在那里看不到它.

如何解决?它有什么共同之处ts-node吗?或者有一个"polyfill" node.js

我的tsconfig.json档案:

{
  "compilerOptions": {
    "declaration": false,
    "emitDecoratorMetadata": true,
    "allowJs": false,
    "experimentalDecorators": true,
    "importHelpers": true,
    "inlineSourceMap": false,
    "inlineSources": false,
    "lib": [
      "DOM",
      "ES5",
      "ES6",
      "ES7"
    ],
    "listFiles": false,
    "module": "commonjs",
    "noEmitOnError": true,
    "noImplicitAny": true,
    "noImplicitReturns": true,
    "noImplicitThis": true,
    "preserveConstEnums": false,
    "pretty": false,
    "removeComments": false,
    "strict": true,
    "target": "es5"
  } …
Run Code Online (Sandbox Code Playgroud)

node.js typescript ts-node typescript2.4

7
推荐指数
1
解决办法
4261
查看次数

使用Mocha/Chai/Sinon全局命名空间问题的Typescript

有没有人知道在打字稿中用ts-node设置测试的正确方法是让Mocha和Chai和Sinon全部被识别,而不需要在每个测试文件中手动导入?我有项目中包含的所有类型定义,包括mocha,sinon,chai.我有以下(它正常工作和运行测试):

mocha.opts:

--require ts-node/register
--option value spec/**/*.spec.ts
--require spec/bootstrap/test-setup.js
--recursive
--retries 0
--sort
--timeout 10000
--ui bdd
Run Code Online (Sandbox Code Playgroud)

package.json中的测试脚本:

"test": "yarn build && NODE_ENV=test nyc mocha ./spec/bootstrap/test-helper.js --opts ./spec/mocha.opts"
Run Code Online (Sandbox Code Playgroud)

我有2个辅助方法(出于某种原因,我必须在JS中做)

测试setup.js:

require('mocha');
var chai = require('chai');
chai.use(require('chai-as-promised'));
chai.use(require('sinon-chai'));

global.expect = chai.expect;
global.Promise = require('bluebird');
Run Code Online (Sandbox Code Playgroud)

测试helper.js:

const sinon = require('sinon');
const _ = require('lodash');
const db = require('../../src/models');

before(() => {
  global.sandbox = sinon.sandbox.create();
});

afterEach(function () {
  global.sandbox.restore();
});

after(() => {
  db.default.sequelize.close();
});
Run Code Online (Sandbox Code Playgroud)

最后一个用于测试设置的垃圾规范:

describe('app', () => {
  const bar …
Run Code Online (Sandbox Code Playgroud)

mocha.js chai typescript visual-studio-code ts-node

7
推荐指数
0
解决办法
1176
查看次数

如何在打字稿中正确使用lodash-es?

我需要lodash-es在我的打字稿项目中使用,但是我无法正确配置它,它总是报告错误,例如SyntaxError: Unexpected identifier

你好

import upperCase from 'lodash-es/upperCase'

console.log('Hello ' + upperCase('typescript') + '!');
Run Code Online (Sandbox Code Playgroud)

package.json

{
  "scripts": {
    "demo": "ts-node hello.ts"
  },
  "dependencies": {
    "lodash-es": "4.17.11"
  },
  "devDependencies": {
    "@types/lodash-es": "4.17.1",
    "ts-node": "7.0.0",
    "typescript": "3.0.1"
  }
}
Run Code Online (Sandbox Code Playgroud)

tsconfig.json

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs"
  }
}
Run Code Online (Sandbox Code Playgroud)

运行时ts-node hello.ts,它将报告错误,例如:

/typescript-use-lodash-es-demo/node_modules/lodash-es/upperCase.js:1
    (function (exports, require, module, __filename, __dirname) { import createCompounder from './_createCompounder.js';
                                                                         ^^^^^^^^^^^^^^^^

    SyntaxError: Unexpected identifier
        at new Script (vm.js:79:7)
        at createScript (vm.js:251:10)
Run Code Online (Sandbox Code Playgroud)

我还针对此问题设置了一个小型演示,您可以根据需要克隆并尝试:https : …

typescript lodash ts-node

7
推荐指数
2
解决办法
2571
查看次数

分析 TypeScript Node.js 应用程序

我正在寻找一种工具来对 TypeScript Node.js 应用程序进行分析,而无需修改整个代码源。

我的意思是分析:使用某些特定工具启动应用程序,其输出结果如下:

方法 | 消耗内存| 消耗的时间

() | 1024 | 20 毫秒……

我做了一些互联网研究,发现了这个:https : //github.com/screepers/screeps-typescript-profiler

但是使用它,我不得不编辑整个代码(通过添加@Profiler 装饰器),我正在寻找一些可以自动检测方法的东西。

谢谢你的帮助!

profiling node.js typescript ts-node

7
推荐指数
1
解决办法
2978
查看次数

如何在 WebStorm 的调试模式下使用 TypeScript 运行 Nodemon

我有一个非常基本的 Express 服务器设置,使用 NodeJS/Express + Nodemon。我使用 WebStorm 作为我的 IDE。

运行调试/检查脚本时,我的应用程序抛出编译时错误。按照此处的说明并了解此处的帖子,我的(简化版)package.json如下所示:

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "nodemon src/app.ts",
    "debug": "nodemon --inspect=127.0.0.1:9229 src/app.ts"
  },
"devDependencies": {
    "@types/express": "^4.17.9",
    "@types/node": "^14.14.19",
    "nodemon": "^2.0.6",
    "ts-node": "^9.1.1",
    "typescript": "^4.1.3"
  }
Run Code Online (Sandbox Code Playgroud)

当我运行时npm run debug,我收到以下错误:

在此输入图像描述

我还尝试了以下方法,结果都相同:

  • "debug": "nodemon --inspect src/app.ts"
  • "debug": "nodemon --inspect=0.0.0.0:9229 src/app.ts"

任何想法为什么会发生这个错误?

该命令npm run dev不会生成错误。经过进一步调查,nodemon 在定位文件时会自动替换 ts-node .ts。反过来,ts-node建议通过注册 ts-node 并使用 node 命令运行服务器来进行调试。

如果您需要使用高级 node.js …

node.js webstorm nodemon ts-node

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

运行导入 css 模块的 ts-node 脚本

如何运行导入 css 模块的脚本?

我正在编写一个打字稿迁移脚本,我想通过ts-node. 理想情况下,我的代码库的组织方式应使脚本的依赖项永远不会接触 React 组件,但事实并非如此。该脚本最终导入 React 组件并因此导入 css 模块,因此ts-node失败,因为它不理解 css 模块:

RenderableInline.tsx(4,20): error TS2307: Cannot find module './styles/RenderableInline.module.scss' or its corresponding type declarations.
Run Code Online (Sandbox Code Playgroud)

只有 webpack 知道如何构建 css 模块,因为我已经通过css-loader.

我发现的唯一先例是 jest,它有一些用于模拟 css 模块的配置选项,因此它可以毫无错误地导入这些文件: https: //jestjs.io/docs/webpack

如何运行依赖于 css 模块的 typescript 脚本?有什么办法可以通过 做到这一点ts-node吗?或者webpack有一些脚本运行功能吗?

javascript typescript webpack ts-node

7
推荐指数
1
解决办法
1056
查看次数

使用worker_thread的Ts节点导致“无法在模块外部使用导入语句”

我有这个简单的代码来尝试工作线程。

// thread.ts
import { Worker, isMainThread } from 'worker_threads';

if (isMainThread) {
    const worker = new Worker(__filename);
} else {
    console.log('hello from worker');
}
Run Code Online (Sandbox Code Playgroud)

显然,当我尝试使用 运行该文件时ts-node thread.ts,出现此错误:

(node:13200) 警告:要加载 ES 模块,请在 package.json 中设置 "type": "module" 或使用 .mjs 扩展名。

语法错误:无法在模块外部使用 import 语句

但是如果我手动编译并调用该文件tsc && dist/thread.js,它就可以正常工作

我尝试进一步实验,如果我将要在工作线程内运行的代码放在外部文件中,那么它也可以正常工作

// thread.ts
import { Worker, isMainThread } from 'worker_threads';
const worker = new Worker('./src/worker.ts');
Run Code Online (Sandbox Code Playgroud)

这是我的 tsconfig.json

{
    "compilerOptions": {
        "target": "es2016", /* Set the JavaScript language version for emitted JavaScript …
Run Code Online (Sandbox Code Playgroud)

typescript ts-node

7
推荐指数
2
解决办法
3043
查看次数

如何使用 VS Code 调试 TypeScript 中的 Node.js 依赖包

假设我们有两个具有以下结构的node.js项目:
项目结构
Foo 项目通过在其 中声明以下内容将 Bar 作为依赖项package.json

{
    "scripts": {
        "start": "ts-node src/index.ts --transpile-only --no-lazy"
    },
    "dependencies": {
        "bar": "file:../Bar"
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用以下命令配置 VSCode 的调试器launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "start",
            "request": "launch",
            "runtimeArgs": [
                "start"
            ],
            "runtimeExecutable": "npm",
            "smartStep": true,
            "type": "node"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我在调试期间进入从 Bar 导入的函数时,无论我将 Bar 的包入口定义为或,它都会进入临时编译的 js 源而不是原始的 TypeScript 源。此外,如果我在 Bar 的打字稿源中添加断点,它们甚至不会被加载。如何让调试器加载 Bar 的断点,并在调试 Foo 时直接进入 TypeScript 源?我应该修改 中的一些属性,还是在启动脚本中将更多选项传递给 ts-node ? 为了更好地说明这个问题,我将两个演示项目上传到了 GitHub:StackOverflow-Demomain …

node.js typescript visual-studio-code ts-node vscode-debugger

7
推荐指数
1
解决办法
1933
查看次数