[英]when transpiling mocha test using ts-node i cannot find module 'tsconfig/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安装为项目的开发依赖项)
我在程序包中安装了mocha
和ts-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.