运行 TypeScript 中的 glob 命令(TS-Node)
Run glob command in TypeScript (TS-Node)
几个月前,我询问了 . I wanted to run tests in RITEway,解决方案是 运行 使用 riteway
而不是 node
的命令。
"test": "NODE_ENV=test riteway -r @babel/register 'src/**/*.test.js'",
现在我将项目转换为 TypeScript。 运行 上面的命令(将 .js
更改为 .ts
后),抛出以下错误:
$ NODE_ENV=test riteway -r @babel/register 'src/tests/**/*.test.ts' | tap-nirvana
/Users/user/my-proj/src/tests/fn.test.ts:1
import { describe } from 'riteway';
^^^^^^
SyntaxError: Cannot use import statement outside a module
at wrapSafe (internal/modules/cjs/loader.js:979:16)
at Module._compile (internal/modules/cjs/loader.js:1027:27)
at Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Object.newLoader [as .js] (/Users/user/my-proj/node_modules/pirates/lib/index.js:104:7)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at /Users/user/my-proj/node_modules/riteway/bin/riteway:54:5
at Array.forEach (<anonymous>)
谷歌搜索后,我想我必须使用 ts-node
,但该命令与 运行ning node
.
有同样的问题
yarn run v1.22.10
$ NODE_ENV=test ts-node -r @babel/register 'src/tests/**/*.test.ts' | tap-nirvana
Error: Cannot find module '/Users/user/my-project/src/tests/**/*.test.ts'
如何将命令提供给 RITEway,同时使其与 TypeScript 一起工作?
{
"compilerOptions": {
"allowJs": true,
"baseUrl": "./src",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"isolatedModules": true,
"jsx": "preserve",
"lib": ["dom", "dom.iterable", "esnext"],
"module": "esnext",
"moduleResolution": "node",
"noEmit": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"strict": true,
"target": "es5"
},
"exclude": ["node_modules"],
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"]
}
您可以通过在 riteway
命令中注册 ts-node/register/transpile-only
来 运行 转译打字稿:
"test": "NODE_ENV=test riteway -r ts-node/register/transpile-only 'src/**/*.test.ts'",
还要确保 tsconfig
中的 module
选项设置为 commonjs
:
{
"compilerOptions": {
"allowJs": true,
"baseUrl": "./src",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"isolatedModules": true,
"jsx": "preserve",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"module": "commonjs",
"moduleResolution": "node",
"noEmit": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"strict": true,
"target": "es6"
},
"exclude": [
"node_modules"
],
"include": [
"next-env.d.ts",
"**/*.ts",
"**/*.tsx"
]
}
几个月前,我询问了 riteway
而不是 node
的命令。
"test": "NODE_ENV=test riteway -r @babel/register 'src/**/*.test.js'",
现在我将项目转换为 TypeScript。 运行 上面的命令(将 .js
更改为 .ts
后),抛出以下错误:
$ NODE_ENV=test riteway -r @babel/register 'src/tests/**/*.test.ts' | tap-nirvana
/Users/user/my-proj/src/tests/fn.test.ts:1
import { describe } from 'riteway';
^^^^^^
SyntaxError: Cannot use import statement outside a module
at wrapSafe (internal/modules/cjs/loader.js:979:16)
at Module._compile (internal/modules/cjs/loader.js:1027:27)
at Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Object.newLoader [as .js] (/Users/user/my-proj/node_modules/pirates/lib/index.js:104:7)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at /Users/user/my-proj/node_modules/riteway/bin/riteway:54:5
at Array.forEach (<anonymous>)
谷歌搜索后,我想我必须使用 ts-node
,但该命令与 运行ning node
.
yarn run v1.22.10
$ NODE_ENV=test ts-node -r @babel/register 'src/tests/**/*.test.ts' | tap-nirvana
Error: Cannot find module '/Users/user/my-project/src/tests/**/*.test.ts'
如何将命令提供给 RITEway,同时使其与 TypeScript 一起工作?
{
"compilerOptions": {
"allowJs": true,
"baseUrl": "./src",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"isolatedModules": true,
"jsx": "preserve",
"lib": ["dom", "dom.iterable", "esnext"],
"module": "esnext",
"moduleResolution": "node",
"noEmit": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"strict": true,
"target": "es5"
},
"exclude": ["node_modules"],
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"]
}
您可以通过在 riteway
命令中注册 ts-node/register/transpile-only
来 运行 转译打字稿:
"test": "NODE_ENV=test riteway -r ts-node/register/transpile-only 'src/**/*.test.ts'",
还要确保 tsconfig
中的 module
选项设置为 commonjs
:
{
"compilerOptions": {
"allowJs": true,
"baseUrl": "./src",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"isolatedModules": true,
"jsx": "preserve",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"module": "commonjs",
"moduleResolution": "node",
"noEmit": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"strict": true,
"target": "es6"
},
"exclude": [
"node_modules"
],
"include": [
"next-env.d.ts",
"**/*.ts",
"**/*.tsx"
]
}