javascript - 无法运行简单的 Typescript 文件
问题描述
我开始了这个 Typescript课程,设置所有内容的步骤非常简单。我创建了一个新目录,运行npm init
,然后npm install --save-dev ts-node typescript
. 我向我的 package.json 添加了一个脚本,如下所示,就像课程建议的那样
PACKAGE.JSON:
{
"name": "part9",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"ts-node": "ts-node"
},
"author": "",
"license": "ISC",
"devDependencies": {
"ts-node": "^10.2.1",
"typescript": "^4.3.5"
}
}
并创建了一个multiplier.ts文件,如下所示:
const multiplicator = (a, b, printText) => {
console.log(printText, a * b);
};
multiplicator(2, 4, "Multiplied numbers 2 and 4, the result is:");
在这一点上,课程说要运行脚本npm run ts-node -- multiplier.ts
,但是当我这样做时,我的终端会出现错误。我花了一个小时安装了其他 stackoverflow 用户建议的几个软件包,但没有任何效果,而且错误消息并不清楚初学者有什么问题。有人能帮我吗?这是下面的错误。如果这有所作为,我正在使用 Windows 10。
> part9@1.0.0 ts-node C:\Users\user\Documents\Documents\Projects\_Courses\FullStackOpen\part9
> ts-node "multiplier.ts"
C:\Users\user\Documents\Documents\Projects\_Courses\FullStackOpen\part9\node_modules\ts-node\src\index.ts:692
return new TSError(diagnosticText, diagnosticCodes);
^
TSError: ⨯ Unable to compile TypeScript:
multiplier.ts:1:24 - error TS7006: Parameter 'a' implicitly has an 'any' type.
1 const multiplicator = (a, b, printText) => {
~
multiplier.ts:1:27 - error TS7006: Parameter 'b' implicitly has an 'any' type.
1 const multiplicator = (a, b, printText) => {
~
multiplier.ts:1:30 - error TS7006: Parameter 'printText' implicitly has an 'any' type.
1 const multiplicator = (a, b, printText) => {
~~~~~~~~~
multiplier.ts:2:3 - error TS2584: Cannot find name 'console'. Do you need to change your target library? Try
changing the 'lib' compiler option to include 'dom'.
2 console.log(printText, a * b);
~~~~~~~
at createTSError (C:\Users\user\Documents\Documents\Projects\_Courses\FullStackOpen\part9\node_modules\ts-node\src\index.ts:692:12)
at reportTSError (C:\Users\user\Documents\Documents\Projects\_Courses\FullStackOpen\part9\node_modules\ts-node\src\index.ts:696:19)
at getOutput (C:\Users\user\Documents\Documents\Projects\_Courses\FullStackOpen\part9\node_modules\ts-node\src\index.ts:883:36)
at Object.compile (C:\Users\user\Documents\Documents\Projects\_Courses\FullStackOpen\part9\node_modules\ts-node\src\index.ts:1185:30)
at Module.m._compile (C:\Users\user\Documents\Documents\Projects\_Courses\FullStackOpen\part9\node_modules\ts-node\src\index.ts:1309:30)
at Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
at Object.require.extensions.<computed> [as .ts] (C:\Users\user\Documents\Documents\Projects\_Courses\FullStackOpen\part9\node_modules\ts-node\src\index.ts:1313:12)
at Module.load (internal/modules/cjs/loader.js:937:32)
at Function.Module._load (internal/modules/cjs/loader.js:778:12)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12) {
diagnosticText: "\x1B[96mmultiplier.ts\x1B[0m:\x1B[93m1\x1B[0m:\x1B[93m24\x1B[0m - \x1B[91merror\x1B[0m\x1B[90m TS7006: \x1B[0mParameter 'a' implicitly has an 'any' type.\r\n" +
'\r\n' +
'\x1B[7m1\x1B[0m const multiplicator = (a, b, printText) => {\r\n' +
'\x1B[7m \x1B[0m \x1B[91m ~\x1B[0m\r\n' +
"\x1B[96mmultiplier.ts\x1B[0m:\x1B[93m1\x1B[0m:\x1B[93m27\x1B[0m - \x1B[91merror\x1B[0m\x1B[90m TS7006: \x1B[0mParameter 'b' implicitly has an 'any' type.\r\n" +
'\r\n' +
'\x1B[7m1\x1B[0m const multiplicator = (a, b, printText) => {\r\n' +
'\x1B[7m \x1B[0m \x1B[91m ~\x1B[0m\r\n' +
"\x1B[96mmultiplier.ts\x1B[0m:\x1B[93m1\x1B[0m:\x1B[93m30\x1B[0m - \x1B[91merror\x1B[0m\x1B[90m TS7006: \x1B[0mParameter 'printText' implicitly has an 'any' type.\r\n" +
'\r\n' +
'\x1B[7m1\x1B[0m const multiplicator = (a, b, printText) => {\r\n' +
'\x1B[7m \x1B[0m \x1B[91m ~~~~~~~~~\x1B[0m\r\n' +
"\x1B[96mmultiplier.ts\x1B[0m:\x1B[93m2\x1B[0m:\x1B[93m3\x1B[0m - \x1B[91merror\x1B[0m\x1B[90m TS2584: \x1B[0mCannot find name 'console'. Do you need to change your target library? Try changing the 'lib' compiler option to include 'dom'.\r\n" +
'\r\n' +
'\x1B[7m2\x1B[0m console.log(printText, a * b);\r\n' +
'\x1B[7m \x1B[0m \x1B[91m ~~~~~~~\x1B[0m\r\n',
diagnosticCodes: [ 7006, 7006, 7006, 2584 ]
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! part9@1.0.0 ts-node: `ts-node "multiplier.ts"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the part9@1.0.0 ts-node script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\user\AppData\Roaming\npm-cache\_logs\2021-08-26T00_32_28_752Z-debug.log
解决方案
好吧,您缺少 tsconfig.json 让我们从
在里面
创建一个你需要的新项目
$ npm init
依赖关系
然后在你添加 package.json 的文件夹中运行这个
$ npm i -D typescript tslib tsutils ts-node
打字稿配置
现在创建一个打字稿项目运行这个
$ ./node_modules/typescript/bin/tsc --init
tsconfig.json
yow tsconfig.josn 是 typescript 的配置将在这里了解更多信息:https ://www.typescriptlang.org/tsconfig
开始
在你的情况下运行程序是这样的
{
"scripts": {
"start": "ts-node ./path-to-where-yow-file-is"
}
}
推荐阅读
- python - 将 GPU 与 python 包 bert_embeddings 和 mxnet 一起使用失败
- excel - Excel 链接的 IF 语句在宏更新后丢失单元格范围
- laravel - 我的计划没有调用 everyMinute()
- c - 相同内存地址的两个不同值?
- ruby - 为什么集成测试失败并显示“测试错误无法断言“login_path”
- python-2.7 - 改善曲线拟合日志
- java - Debian 的 Docker 映像:拒绝访问文件或目录“/usr/local/openjdk-8/bin/java”
- python - 旨在使用 JSON、请求和 gtts 发送音频消息的 Python VK 聊天机器人不起作用
- ios - SwiftUI 文本对齐
- python - 具有双索引的 Pandas 查询