我正在尝试将 ts-node 与 nodemon 一起使用。两者都使用纱线安装,我的 package.json 具有以下结构:
{
"name": "yarnTest",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"devDependencies": {
"@types/express": "^4.0.36",
"bootstrap-sass": "^3.3.7",
"nodemon": "^1.11.0",
"typescript": "^2.4.1"
},
"dependencies": {
"@types/chalk": "^0.4.31",
"chalk": "^2.0.1",
"express": "^4.15.3",
"ts-node": "^3.2.0"
},
"scripts": {
"dev": "nodemon --exec 'ts-node --cache-directory .tscache' ./src/www.ts",
"start": "ts-node --fast ./dist/www.ts"
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我使用“yarn run dev”时,它执行 nodemon 并且 nodemon 尝试执行“ts-node”但 nodemon 告诉我命令“ts-node”不存在:
Der Befehl "'ts-node" ist entweder falsch geschrieben oder konnte nicht gefunden werden。
Yarn 是全局安装的,但 ts-node 仅为我的项目安装。我已经尝试过:
"scripts": { …Run Code Online (Sandbox Code Playgroud) 我想测试一些我编写的 Typescript 代码。
到目前为止,我所知道的最好的方法是运行ts-node my-file-name.ts.
但是,我想让它更具交互性,类似于 Python REPL 允许您导入模块,然后根据需要从 REPL 调用函数。
例如,一个会话可能看起来像
$ ts-node
> import my-file-name.ts
> myFunctionFromMyFile("specialParam")
> "you just called a function from my-file-name.ts with param specialParam"
Run Code Online (Sandbox Code Playgroud)
这可能ts-node吗?
我有一些代码用来typeof window == "undefined"检查是否存在浏览器环境。当我使用 启动此代码时ts-node,我得到以下信息:
typings/Console.ts:36:10 - error TS2304: Cannot find name 'window'.
36 typeof window == "undefined"
~~~~~~
Run Code Online (Sandbox Code Playgroud)
AFAIKtypeof是一种可以安全地与未定义的变量一起使用的运算符,并且它在浏览器和 NodeJS 环境中都运行良好。但当我开始使用它时ts-node,它开始抛出。
我的tsconfig.json
{
"compilerOptions": {
"module": "CommonJS",
"target": "es5",
"moduleResolution": "node",
"baseUrl": "src",
"allowSyntheticDefaultImports": true,
"noImplicitAny": true,
"strict": false,
"sourceMap": true,
"traceResolution": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"strictNullChecks": true,
"allowJs": false,
"declaration": false,
"removeComments": true,
"noLib": false,
"preserveConstEnums": true,
"suppressImplicitAnyIndexErrors": true,
"types": [ "node" ],
"lib": [ "es6" ],
"downlevelIteration": …Run Code Online (Sandbox Code Playgroud) 我尝试将打字稿库与节点一起使用,但我不断收到这些语法错误。我正在使用 ts-node-dev 运行 package.json 中的开发脚本。错误显示在导入语句附近,我不确定我的 tsconfig.json 是否有问题(它也附在下面)。但我正在使用 "module":"commonjs" 。
[INFO] 13:22:15 ts-node-dev ver. 1.1.8 (using ts-node ver. 9.1.1, typescript ver. 4.4.3)
/mnt/d/Polkadex/web-proxy/node_modules/@polkadot/keyring/index.js:3
import "./detectPackage.js";
^^^^^^^^^^^^^^^^^^^^
SyntaxError: Unexpected string
at Module._compile (internal/modules/cjs/loader.js:723:23)
at Module._compile (/mnt/d/Polkadex/web-proxy/node_modules/source-map-support/source-map-support.js:568:25)
at Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Object.nodeDevHook [as .js] (/mnt/d/Polkadex/web-proxy/node_modules/ts-node-dev/lib/hook.js:63:13)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (/mnt/d/Polkadex/web-proxy/src/helpers/testUser.ts:1:1)
[ERROR] 13:22:19 SyntaxError: Unexpected string
Run Code Online (Sandbox Code Playgroud)
包.json
[INFO] 13:22:15 ts-node-dev ver. 1.1.8 (using ts-node ver. 9.1.1, typescript ver. 4.4.3)
/mnt/d/Polkadex/web-proxy/node_modules/@polkadot/keyring/index.js:3
import …Run Code Online (Sandbox Code Playgroud) 我有一个脚本,package.json在使用标准文件时按预期运行.env。
"scripts": {
"commands": "ts-node-dev --files deploy-commands.ts",
},
Run Code Online (Sandbox Code Playgroud)
但是当我尝试指定不同的 .env 文件时 ( .env.prod)
"scripts": {
"commands": "dotenv -e .env.prod ts-node-dev --files deploy-commands.ts",
},
Run Code Online (Sandbox Code Playgroud)
我收到错误:
ts-node-dev: no script to run provided
Run Code Online (Sandbox Code Playgroud) 我已经使用typescript类设置了一个快速应用程序,并遇到了一个奇怪的问题.所有的测试都已经过去了,今天当我去更新一些路线时,我的测试不再运行了.当我运行我的测试脚本时,我在控制台中收到此错误消息:
$ mocha -c --reporter spec --compilers ts:ts-node/register ./test/*.test.ts --
timeout 20000
/Users/christiantodd/Development/projects/bby-react-api/src/index.ts:8
const app: Api = new Api();
^
TypeError: Api_1.default is not a constructor
at Object.<anonymous> (/Users/christiantodd/Development/projects/bby-react-api/src/index.ts:8:18)
at Module._compile (module.js:635:30)
at Module.m._compile (/Users/christiantodd/Development/projects/bby-react-api/node_modules/ts-node/src/index.ts:392:23)
at Module._extensions..js (module.js:646:10)
at Object.require.extensions.(anonymous function) [as .ts] (/Users/christiantodd/Development/projects/bby-react-api/node_modules/ts-node/src/index.ts:395:12)
Run Code Online (Sandbox Code Playgroud)
我的Api.ts文件如下:
import * as bodyParser from 'body-parser';
import * as express from 'express';
import * as expressValidator from 'express-validator';
import * as helmet from 'helmet';
import * as morgan from 'morgan';
import * as …Run Code Online (Sandbox Code Playgroud) 我想弄清楚如何以编程方式将打字稿文件呈现为 javascript 文件。
这是否可以与 ts-node 一起使用,例如:
function tsMiddleware (req, res, next) {
var parsed = require('url').parse(req.url);
if (parsed.pathname.match(/\.ts$/)) {
return ts(parsed.pathname).then(function (o) {
res.setHeader('Content-Type', 'text/js');
res.end(o.js);
}).catch((err) => {
console.log(err);
});
}
next();
function ts(src) {
return new Promise((resolve, reject) => {
require('ts-node').render({
file: 'src' + src
}, function (err, res) {
if (err) {
reject(err);
} else {
resolve(res);
}
});
});
}
}
Run Code Online (Sandbox Code Playgroud)
我不想在 nodejs 中执行 ts 文件,而只是编译 ts 文件并将输出发送回浏览器。
我创建了一个基于 TypeORM 的项目,仅用于运行迁移脚本;我使用的是TypeORM CLI来run,show或者revert他们,但如果这样做没有得到任何输出。
我获得输出的唯一情况是当我运行typeorm migration:create或 时npm run migration:create,但在其他情况下,输出与以下相同:
这是 my 的内容,package.json以便您可以看到scripts我正在使用的和依赖项:
{
"name": "bgt-data-import",
"version": "0.0.1",
"description": "BGT Data Import",
"devDependencies": {
"ts-node": "^8.10.2",
"@types/node": "^9.6.5",
"typescript": "^3.9.6"
},
"dependencies": {
"aws-sdk": "^2.709.0",
"axios": "^0.19.2",
"dotenv": "^8.2.0",
"npm": "^6.14.5",
"pg": "^7.3.0",
"reflect-metadata": "^0.1.10",
"typeorm": "0.2.25"
},
"scripts": {
"start": "ts-node src/index.ts",
"typeorm": "node -r ts-node/register ./node_modules/typeorm/cli.js",
"migration:generate": "npm run typeorm migration:generate --config ./ormconfig.json --name",
"migration:run": …Run Code Online (Sandbox Code Playgroud) ts-node 给我这个错误:
找不到模块“process”或其相应的类型声明。
这是我的 tsconfig.json
{
"compilerOptions": {
"types": [ "node "],
"declaration": true,
"target": "ESNext",
"module": "CommonJS",
"outDir": "./dist",
"rootDir": "./src",
"moduleResolution": "node"
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 package.json
{
"name": "example",
"version": "1.0.0",
"description": "",
"main": "index.js",
"author": "Seph Reed",
"license": "ISC",
"devDependencies": {
"@types/node": "^14.14.9",
"ts-node": "^9.0.0",
"typescript": "^4.1.2"
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误?
我正在使用NestjsWebStorm & TS 4.2.3^latest。
我面临的问题有点奇怪。例如,一些模块axios可以像往常一样安装、导入和使用。但是有些模块,尤其是 Nodejs Core,比如fs或path,不能作为模块导入。但是他们的方法可以导入和使用就好了!
//ERROR: Module undefined on run:dev, but no error in IDE
import path from 'path';
import fs from 'fs';
//Working fine
import { join } from 'path';
import { readFileSync } from 'path';
Run Code Online (Sandbox Code Playgroud)
我敢肯定,他们有正确的 TS 类型,甚至手动安装。例如:
import axios from 'axios';
import path from 'path'; //path is undefined
import { join } from 'path'; // working fine
import { Injectable } from '@nestjs/common';
@Injectable() …Run Code Online (Sandbox Code Playgroud) ts-node ×10
typescript ×10
node.js ×7
ts-node-dev ×2
dotenv ×1
express ×1
import ×1
javascript ×1
mocha.js ×1
module ×1
nestjs ×1
nodemon ×1
polkadot-js ×1
typeof ×1
typeorm ×1
webstorm ×1
yarnpkg ×1