Running a simple express app with ts-node-dev and get error: False expression: Non-string value passed to `ts.resolveTypeReferenceDirective`
Running a simple express app with ts-node-dev and get error: False expression: Non-string value passed to `ts.resolveTypeReferenceDirective`
我是 typescript 和 express 的新手。我正在尝试使用 ts-node-dev
运行 最简单的快捷应用程序,但出现以下错误。
> ./node_modules/.bin/ts-node-dev src/index.ts 16:07:40
[INFO] 16:07:42 ts-node-dev ver. 1.1.8 (using ts-node ver. 9.1.1, typescript ver. 4.7.2)
Compilation error in /home/lht/microservice/ticketing/auth/src/index.ts
Error: Debug Failure. False expression: Non-string value passed to `ts.resolveTypeReferenceDirective`, likely by a wrapping package working with an outdated `resolveTypeReferenceDirectives` signature. This is probably not a problem in TS itself.
at Object.<anonymous> (/home/lht/microservice/ticketing/auth/src/index.ts:1:7)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Module._compile (/home/lht/microservice/ticketing/auth/node_modules/source-map-support/source-map-support.js:568:25)
at Module.m._compile (/tmp/ts-node-dev-hook-8101223397369532.js:69:33)
at Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at require.extensions.(anonymous function) (/tmp/ts-node-dev-hook-8101223397369532.js:71:20)
at Object.nodeDevHook [as .ts] (/home/lht/microservice/ticketing/auth/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)
[ERROR] 16:07:42 Error: Debug Failure. False expression: Non-string value passed to `ts.resolveTypeReferenceDirective`, likely by a wrapping package working with an outdated `resolveTypeReferenceDirectives` signature. This is probably not a problem in TS itself.
以下是我的index.ts
文件。
import express from "express";
import { json } from "body-parser";
const app = express();
app.use(json());
app.listen(3000, () => {
console.log("Listening on port 3000!");
});
这是我的 package.json
文件
{
"name": "auth",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "ts-node src/index.ts"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {},
"dependencies": {
"@types/express": "^4.17.13",
"@types/node": "^17.0.35",
"express": "^4.18.1",
"ts-node": "^10.8.0",
"ts-node-dev": "^1.1.8",
"typescript": "^4.7.2"
}
}
请问是不是我做的配置有问题。提前致谢。
只需在我的 package.json
文件中将 ts-node-dev
版本从 1.1.8
更改为 2.0.0-0
,然后再次 运行 npm install
,然后错误消失。
{
"name": "auth",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "ts-node src/index.ts"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {},
"dependencies": {
"@types/express": "^4.17.13",
"@types/node": "^17.0.35",
"express": "^4.18.1",
"ts-node": "^10.8.0",
"ts-node-dev": "^2.0.0-0",
"typescript": "^4.7.2"
}
}
我观察到,为什么其他服务工作正常,除了一个。
我发现,失败的服务是用不同的 TS 版本编译的。
在我更改 TS 版本后
"typescript": "^4.6.3"
至
"typescript": "4.6.4"
这也解决了这个问题。
我 运行 从一个新构建的 typeorm 应用程序 (npx create-express-typescript-application my-app -t typeorm
) 进入这个。将 ts-node
改为 ^10.8.0
解决了问题。
一个快速简单的修复方法是 运行 npm install typescript@latest ts-node@latest
。问题可能是旧的 ts-node 与最新的打字稿 4 不兼容。7.x 发布并升级它们解决了我的问题。
我只是 运行 在尝试使用 nodemon 运行 纱线工作区内的节点服务器时遇到这个问题。 运行 工作区子文件夹中的 nodemon 有效,但工作区根文件夹本身无效。
worspace 子文件夹中的脚本如下所示
"dev": "nodemon"
从根文件夹
"dev:my-service": "yarn workspace my-service dev"
我通过专门将 ts-node 作为开发依赖项添加到“my-service”工作区来解决它
我是 typescript 和 express 的新手。我正在尝试使用 ts-node-dev
运行 最简单的快捷应用程序,但出现以下错误。
> ./node_modules/.bin/ts-node-dev src/index.ts 16:07:40
[INFO] 16:07:42 ts-node-dev ver. 1.1.8 (using ts-node ver. 9.1.1, typescript ver. 4.7.2)
Compilation error in /home/lht/microservice/ticketing/auth/src/index.ts
Error: Debug Failure. False expression: Non-string value passed to `ts.resolveTypeReferenceDirective`, likely by a wrapping package working with an outdated `resolveTypeReferenceDirectives` signature. This is probably not a problem in TS itself.
at Object.<anonymous> (/home/lht/microservice/ticketing/auth/src/index.ts:1:7)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Module._compile (/home/lht/microservice/ticketing/auth/node_modules/source-map-support/source-map-support.js:568:25)
at Module.m._compile (/tmp/ts-node-dev-hook-8101223397369532.js:69:33)
at Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at require.extensions.(anonymous function) (/tmp/ts-node-dev-hook-8101223397369532.js:71:20)
at Object.nodeDevHook [as .ts] (/home/lht/microservice/ticketing/auth/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)
[ERROR] 16:07:42 Error: Debug Failure. False expression: Non-string value passed to `ts.resolveTypeReferenceDirective`, likely by a wrapping package working with an outdated `resolveTypeReferenceDirectives` signature. This is probably not a problem in TS itself.
以下是我的index.ts
文件。
import express from "express";
import { json } from "body-parser";
const app = express();
app.use(json());
app.listen(3000, () => {
console.log("Listening on port 3000!");
});
这是我的 package.json
文件
{
"name": "auth",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "ts-node src/index.ts"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {},
"dependencies": {
"@types/express": "^4.17.13",
"@types/node": "^17.0.35",
"express": "^4.18.1",
"ts-node": "^10.8.0",
"ts-node-dev": "^1.1.8",
"typescript": "^4.7.2"
}
}
请问是不是我做的配置有问题。提前致谢。
只需在我的 package.json
文件中将 ts-node-dev
版本从 1.1.8
更改为 2.0.0-0
,然后再次 运行 npm install
,然后错误消失。
{
"name": "auth",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "ts-node src/index.ts"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {},
"dependencies": {
"@types/express": "^4.17.13",
"@types/node": "^17.0.35",
"express": "^4.18.1",
"ts-node": "^10.8.0",
"ts-node-dev": "^2.0.0-0",
"typescript": "^4.7.2"
}
}
我观察到,为什么其他服务工作正常,除了一个。 我发现,失败的服务是用不同的 TS 版本编译的。 在我更改 TS 版本后
"typescript": "^4.6.3"
至
"typescript": "4.6.4"
这也解决了这个问题。
我 运行 从一个新构建的 typeorm 应用程序 (npx create-express-typescript-application my-app -t typeorm
) 进入这个。将 ts-node
改为 ^10.8.0
解决了问题。
一个快速简单的修复方法是 运行 npm install typescript@latest ts-node@latest
。问题可能是旧的 ts-node 与最新的打字稿 4 不兼容。7.x 发布并升级它们解决了我的问题。
我只是 运行 在尝试使用 nodemon 运行 纱线工作区内的节点服务器时遇到这个问题。 运行 工作区子文件夹中的 nodemon 有效,但工作区根文件夹本身无效。
worspace 子文件夹中的脚本如下所示
"dev": "nodemon"
从根文件夹
"dev:my-service": "yarn workspace my-service dev"
我通过专门将 ts-node 作为开发依赖项添加到“my-service”工作区来解决它