node.js - Node Lambda : Import of ts-node results in TypeError

标签 node.js typescript typeerror node-modules jestjs

我是 Node 和编写服务器端代码的新手,所以请多多包涵。 目前,我正在使用 Typescript 编写 Node lambda。为了在我的项目中使用它,我需要将 typescript 模块作为依赖项,因此我将它们列在我的 package.json 文件中,并使用 npm install 安装它们。接下来我运行 npm test 并收到此错误日志。

LT-2012011001:example-data-sync amohnacs$ npm test

> example-data-sync@1.0.0 test /Users/amohnacs/Developer/git/example-data-sync
> nyc ./node_modules/.bin/jasmine-ts ./spec/**/*.spec.ts


/Users/amohnacs/Developer/git/example-data-sync/node_modules/ts-node/src/index.ts:313
      throw new TypeError(
            ^
TypeError: Unable to require `.d.ts` file.
This is usually the result of a faulty configuration or import. Make sure there is a `.js`, `.json` or another executable extension and loader (attached before `ts-node`) available alongside     `/Users/amohnacs/Developer/git/example-data-sync/node_modules/any-promise/implementation.d.ts`.
at getOutput (/Users/amohnacs/Developer/git/example-data-sync/node_modules/ts-node/src/index.ts:313:17)
at /Users/amohnacs/Developer/git/example-data-sync/node_modules/ts-node/src/index.ts:334:18
at Object.compile (/Users/amohnacs/Developer/git/example-data-sync/node_modules/ts-node/src/index.ts:462:19)
at Object.m._compile (/Users/amohnacs/Developer/git/example-data-sync/node_modules/ts-node/src/index.ts:392:44)
at Module._extensions..js (module.js:550:10)
at Object.require.extensions.(anonymous function) [as .ts] (/Users/amohnacs/Developer/git/example-data-sync/node_modules/ts-node/src/index.ts:395:12)
at NYC._readTranspiledSource (/Users/amohnacs/Developer/git/example-data-sync/node_modules/nyc/index.js:150:26)
at NYC.addFile (/Users/amohnacs/Developer/git/example-data-sync/node_modules/nyc/index.js:134:21)
at /Users/amohnacs/Developer/git/example-data-sync/node_modules/nyc/index.js:166:11
at /Users/amohnacs/Developer/git/example-data-sync/node_modules/nyc/index.js:231:5
npm ERR! Test failed.  See above for more details.

这是我的package.json

{
  "name": "example-data-sync",
  "version": "1.0.0",
  "description": "An example project using the serverless framework for a lambda that subscribes to kinesis events.",
  "main": "index.js",
  "scripts": {
    "postinstall": "./node_modules/.bin/tsd install && ./node_modules/.bin/tsd link",
    "sls:init": "./node_modules/.bin/sls project init -c",
    "test": "./node_modules/.bin/nyc ./node_modules/.bin/jasmine-ts ./spec/**/*.spec.ts",
    "dp:dev:meta": "sls meta sync -s dev -r us-east-1",
    "dp:dev:cf": "sls resources deploy -s dev -r us-east-1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://gitlab.com/danteinc-sandbox/example-data-sync.git"
  },
  "keywords": [
    "kinesis",
    "event",
    "stream"
  ],
  "author": "John Gilbert <john.gilbert@danteinc.com> (danteinc.com)",
  "private": true,
  "license": "SEE LICENSE IN LICENSE.md",
  "bugs": {
    "url": "https://gitlab.com/danteinc-sandbox/example-data-sync/issues"
  },
  "homepage": "https://gitlab.com/danteinc-sandbox/example-data-sync#README",
  "devDependencies": {
    "aws-sdk": "^2.6.1",
    "jasmine-console-reporter": "^1.2.7",
    "jasmine-ts": "0.0.3",
    "nyc": "^8.1.0",
    "serverless": "^0.5.0",
    "serverless-meta-sync": "^0.1.0",
    "ts-node": "^1.3.0",
    "tsd": "^0.6.5",
    "typescript": "^1.8.10"
  },
  "dependencies": {
    "bluebird": "^3.3.5",
    "dante-commons-lambda": "^0.X.0",
    "debug": "^2.2.0",
    "highland": "^2.5.1",
    "lodash": "^3.10.1",
    "moment": "^2.12.0"
  },
  "nyc": {
    "lines": 95,
    "statements": 95,
    "functions": 95,
    "branches": 95,
    "include": [
      "src/**/*.ts"
    ],
    "exclude": [
      "spec/**/*.spec.ts",
      "typings"
    ],
    "extension": [
      ".ts"
    ],
    "require": [
      "ts-node/register"
    ],
    "reporter": [
      "json",
      "html",
      "text-summary"
    ],
    "cache": false,
    "check-coverage": true,
    "all": true
  }
}

它告诉我我的项目配置不正确,但按照它看起来的路径在 ts-node 中出现问题。我的项目配置是否遗漏或不正确,或者我可能使用了错误版本的 ts-node 或 Typescript。

提前谢谢你。

最佳答案

package.jsonnyc.exclude 部分添加 node_modules

"nyc": {
  "exclude": [
    "spec/**/*.spec.ts",
    "typings",
    "node_modules"
  ],

关于node.js - Node Lambda : Import of ts-node results in TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39985622/

相关文章:

Node.js - 如何导出对象和函数

node.js - 凭据错误 : Missing credentials in config in nodejs aws-sdk

javascript - 有没有办法对 AJAX 表单执行类似于 onbeforeunload 的操作?

javascript - angularjs ngIf 的类型错误问题

python - 我得到一个 "TypeError: ' int' 对象没有属性 '_getitem',我不知道为什么

node.js - 如何立即关闭 Node.js http(s) 服务器?

javascript - react : Update component data/props after promise resolved

node.js - 部署 Typescript NodeJS 服务器

typescript - 不一致的输入 [...].map() 点自由或箭头功能

node.js - npm安装错误: TypeError: uid must be an int