NodeJs 打字稿和模块问题
Posted
技术标签:
【中文标题】NodeJs 打字稿和模块问题【英文标题】:NodeJs typescript and module issues 【发布时间】:2020-09-25 22:44:18 【问题描述】:我在 typescript 中有一个测试 nodeJS 服务器代码。 尝试运行 ts 文件时出现此错误:
TypeError [ERR_UNKNOWN_FILE_EXTENSION]:未知文件扩展名为“.ts”
我的 package.json
"name": "server",
"version": "1.0.0",
"description": "server",
"main": "server.ts",
"type": "module",
"scripts":
"test": "test server",
"prebuild": "tslint -c tslint.json -p tsconfig.json --fix",
"build": "tsc",
"prestart": "npm run build",
"start": "node .",
"tsc": "tsc"
,
"author": "HL",
"license": "ISC",
"devDependencies":
"@types/node": "^14.0.6",
"tslint": "^6.1.2",
"typescript": "^3.9.5"
,
"dependencies":
"@types/express": "^4.17.6",
"ejs": "^3.1.3",
"express": "^4.17.1",
"http": "0.0.1-security",
"mysql": "^2.18.1",
"util": "^0.12.3"
注意我需要使用 type: module,因为我删除它时会出错:
SyntaxError: Cannot use import statement outside a module
at wrapSafe (internal/modules/cjs/loader.js:1067:16)
at Module._compile (internal/modules/cjs/loader.js:1115:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
at Module.load (internal/modules/cjs/loader.js:1000:32)
at Function.Module._load (internal/modules/cjs/loader.js:899:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
请帮忙。
【问题讨论】:
需要编译成js,或者使用ts-node 【参考方案1】:你需要在使用 node 运行之前编译,或者使用 ts-node 来运行你的 typescript。此外,这可能是您的 tsconfig 和导入引起的问题。
【讨论】:
【参考方案2】:这可能来自多个方面(如果我忘记了什么,请发表评论,因为这是一个通用的配置错误):
-
将您的 main 更改为 ts-node(根据不同答案的建议)或将您的
package.json
中的 main
字段更改为 <buildFolder (normally diet)>/server.js
以引用构建文件而不是 typescript 文件。
将 module
字段 tsconfig.json
更改为 CommonJS
以避免构建 ES6 模块(这是一个问题,尤其是使用 webpack 时
【讨论】:
以上是关于NodeJs 打字稿和模块问题的主要内容,如果未能解决你的问题,请参考以下文章