Typescript 如何使用ts loader忽略网页包中的测试文件
我有一个项目运行名为“*.test.ts”的测试文件,其中包含jest和ts jest。这很好,但当我启动webpack时,测试文件会出现错误: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
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被告知按照此答案所述绑定的文件