Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 如何使用ts loader忽略网页包中的测试文件_Typescript_Webpack - Fatal编程技术网

Typescript 如何使用ts loader忽略网页包中的测试文件

Typescript 如何使用ts loader忽略网页包中的测试文件,typescript,webpack,Typescript,Webpack,我有一个项目运行名为“*.test.ts”的测试文件,其中包含jest和ts jest。这很好,但当我启动webpack时,测试文件会出现错误: ERROR in /some/path/note.test.ts (27,3): error TS2304: Cannot find name ' 如何修复webpack配置以完全忽略测试文件 以下是网页包配置: const path = require ( 'path' ) module.exports = { entry: './src/boo

我有一个项目运行名为“*.test.ts”的测试文件,其中包含jest和ts jest。这很好,但当我启动webpack时,测试文件会出现错误:

ERROR in /some/path/note.test.ts
(27,3): error TS2304: Cannot find name '
如何修复webpack配置以完全忽略测试文件

以下是网页包配置:

const path = require ( 'path' )

module.exports =
{ entry: './src/boot.tsx'
, node:
  { __dirname: false
  }
, output:
  { path: path.resolve ( __dirname, 'app', 'build' )
  , filename: 'app.js'
  , publicPath: '/live-reload/'
  }
, devtool: 'source-map'
, resolve:
  { extensions: ['', '.js', '.ts', '.tsx']
  }
, module:
  { loaders:
    [ { test: /\.tsx?$/
      , exclude: /node_modules/
      , loader: 'ts-loader'
      }
    ]
  }
}
[编辑]


我使用test函数记录所看到的文件,而测试文件没有出现在其中,因此问题不在于包含错误文件的网页,而在于typescript行为不当(因为测试可以与jest一起正常工作)。

您可以为加载程序
test
属性指定一个函数,而不是正则表达式;这可以给你更多的控制

test: function (modulePath) {
  return modulePath.endsWith('.ts') && !modulePath.endsWith('test.ts');
}

找到了。我的“ts loader”版本落后了,不知何故未能正确处理已安装的@types


经验法则:打包、生成、传输问题:升级开发依赖项

我最终也解决了这个问题,但解决方法不同,即将以下设置添加到我的
.tsconfig
文件中:

"include": [
    "./lib/**/*"
],
"exclude": [
    "./lib/__tests__"
]
我不知道为什么OP和公司没有这样做。可能他们的
.tslint
文件中已经有了这些设置(例如,因为他们的项目是从另一个项目生成或派生的)


但它看起来像是TypeScript(至少在2.3.2版本中是这样)注意到了这些设置,并忽略了
webconfig.config.js

中的等效设置。感谢指针,但它并没有修复它(我添加了一条注释)。问题似乎出在typescript而不是网页过滤上……我尝试升级到最新版本,目前是2.1.0,但我已经达到了该版本(并在
node\u modules
文件夹中进行了双重检查以确保),我仍然遇到了这个问题!你还做了什么,或者只是升级了版本吗?确保typescript也更新到了最新版本(目前为2.3.x)…你帮我省了很多时间,让我用webpack把头撞在墙上。非常感谢。我假设你把所有的测试文件都放在
/lib/\uuuuu tests\uuuuu
下,对吗?如果将该文件夹排除在Tconfig中,您将从TS中丢失intellisense。我认为更合理的解决方案是。如果我希望typescript在开发过程中检查测试文件,但我不想将其包括在我的捆绑包中,该怎么办?默认情况下,TS loader会编译所有TS文件,即使文件Webpack没有被告知捆绑,例如,像测试文件一样,由于缺少全局变量而引发错误。ts加载器可能被配置为仅编译Webpack被告知按照此答案所述绑定的文件