繁体   English   中英

找不到模块“ts-node/register”

[英]Cannot find module 'ts-node/register'

我想使用 mocha 来测试我的 TypeScript/Angular2 项目。 我尝试按照此处所述使用ts-node

npm install -g ts-node

但是跑步的时候

mocha --require ts-node/register -t 10000 ./**/*.unit.ts

我得到一个错误

找不到模块“ts-node/register”

我在这里错过了什么?

由于对很多人有用的答案似乎已隐藏在注释中,因此我将其发布为该问题的实际答案,现在看来问题已被重新打开。

我也有这个问题。 不知道为什么这个问已被关闭。 但是在本地安装ts-node可以解决此问题。 npm install ts-node --save-dev

感谢@Anita,因为这也是对我有用的答案。

哇,愚蠢的错误会浪费您的时间。 当我尝试调试nodejs应用程序时,我遇到了同样的问题。 我犯的错误是我在nodejs应用程序文件夹(其中node_modules的目录)之外创建了.vscode文件夹。 当我将.vscode移至该文件夹时,一切正常。 以下是我的launch.json文件。

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "index",         
            "args": [
                "src/index.ts"
            ],
            "runtimeArgs": [
                "-r",
                "ts-node/register"
            ],
            "cwd": "${workspaceFolder}",
            "protocol": "inspector",
            "internalConsoleOptions": "openOnSessionStart"           
        }
    ],
    "compounds": []
}

在此处输入图片说明

请尝试以下命令:

mocha --compilers ts:ts-node/register,tsx:ts-node/register

这对我有用。

我知道这有点旧,但是我也遇到了这个问题,想提供我目前正在使用的解决方案。

我使用sudo npm i -g ts-node全局安装了ts-node sudo npm i -g ts-node 为了使mocha能够正常工作,我只需要给mocha到模块的绝对路径,就像这样:

mocha -r /usr/lib/node_modules/ts-node/register test/*Test.ts

希望对别人有帮助。

Error: module.js:328 throw err; Error: Cannot find module 'ts-node'

解决方案:使用以下命令可以解决此问题。
npm install ts-node --save-dev

(将ts-node安装为项目的开发依赖项)

我在程序包中安装了mochats-node作为dev依赖项。 我也在用pnpm。 我最初有一个test script ,定义为:

pnpx mocha -r ts-node/register '*.test.ts'

当此命令停止工作并出现与该问题所报告的错误相同的错误时,我通过显式显示-r路径来解决此问题:

pnpx mocha -r ./node_modules/ts-node/register '*.test.ts'

对于原始版本为何停止工作,我仍然感到困惑。

假设您不想在本地安装 ts-node,而是更愿意使用全局安装的 node_module。 以下示例显示了为 Windows 执行的操作,并假设您使用的是 NVM。 如果不使用 NVM,请将NVM_SYMLINK替换为C:\Program Files\nodejs

命令行示例:

node -r "%NVM_SYMLINK%\node_modules\ts-node\register" script.ts arg1 arg2

bash 示例:

node -r "$NVM_SYMLINK/node_modules/ts-node/register" script.ts arg1 arg2

vscode launch.config 示例

  "configurations": [
    {
      "name": "utils/roll_browser",
      "type": "node",
      "request": "launch",
      "runtimeArgs": [
        "-r",
        /* Slower startup. Runs full typescript validation */
        // "${env:NVM_SYMLINK}/node_modules/ts-node/register"
        /* Faster startup. Doesn't check types or verify the code is valid */
        "${env:NVM_SYMLINK}/node_modules/ts-node/register/transpile-only"
      ],
      "args": ["${workspaceFolder}/utils/roll_browser.ts", "chromium", "756141"],
    },
  ]

我在使用“jasmine-unit-test-generator”时遇到了同样的问题。 我通过运行npm link ts-node来修复它。 可以参考https://github.com/TypeStrong/ts-node/issues/565

使用/node_modules/ts-node/register代替ts-node/register 所以在你的情况下它会变成:

mocha --require /node_modules/ts-node/register -t 10000 ./**/*.unit.ts

并确保 ts-node 在您的项目中本地安装,例如:

npm install ts-node @types/node typescript

此解决方案不需要您全局安装 ts-node。 它适用于跨平台和每个人。

我知道我迟到了,但我今天遇到了同样的问题你必须给--require标志一个绝对路径。 我有同样的错误,我从这个开始解决了它:

"script":{
 .....
 "test":"env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' mocha --require /node_modules/ts-node/register 'test/**/*.ts'"
 }

为此,使用标志的相对路径:

"script":{
 .....
 "test":"env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' mocha --require ./node_modules/ts-node/register 'test/**/*.ts'"
 }

关键是./node_modules中的点。 当然,您必须在本地或全局安装模块并链接到节点项目

如果您不想使用本地版本的 ts-node(您的项目正在使用的那个),而是想使用您安装的全球版本的 ts-node,您可以这样做......

which ts-node # to find the path for the global ts-node
{
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "request": "launch",
      "name": "ts-node",
      "type": "node",
      "program": "THE_PATH_YOU_GOT_FROM_THE_WHICH_CMD",
      "args": [
        "${relativeFile}"
      ],
      "cwd": "${workspaceRoot}",
      "internalConsoleOptions": "openOnSessionStart"
    }  
  ]
}

如果您使用的是 ts-node 的全局安装,则不需要使用 node -r 运行时参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM