NodeJ的打字稿和模块问题

时间:2020-06-06 19:44:24

标签: node.js angular 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:模块,因为删除它时会出现错误:

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

请帮助。

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

这可能来自多个方面(如果由于某些通用配置错误而我忘记了一些内容,请注意:)

  1. 将主节点更改为ts节点(根据另一个答案的建议),或将main中的package.json字段更改为<buildFolder (normally diet)>/server.js,以引用生成的文件而不是打字稿文件。
  2. module字段tsconfig.json更改为CommonJS以避免构建ES6模块(这是一个问题,尤其是对于webpack

答案 2 :(得分:0)

您需要先进行编译,然后再运行node或使用ts-node运行您的打字稿。另外,这可能是您的tsconfig和导入引起的问题。