J'ai essayé d'obtenir des tests automatisés pour mon référentiel en utilisant mocha-webpack et Travis CI. Mes tests fonctionnent bien sur ma machine locale, mais ils n'ont pas encore été terminés par Travis CI. Je n'ai pas été en mesure de comprendre cette dernière erreur:Travis CI, Moka Test, Webpack Compilation Erreur: Module introuvable: 'jQuery'
WEBPACK Failed to compile with 1 error(s)
Error in ./src/ts/myfile.ts
Module not found: 'jQuery' in '/home/travis/build/myname/myrepo/src/ts'
Basé hors du message d'erreur, il semble que webpack tente de résoudre le module jQuery (je suppose que l'importation est ajoutée à travers mon webpack Appel .ProvidePlugin, car il n'y a pas d'importations jquery dans monfichier.ts) dans mes fichiers, au lieu de chercher dans node_modules.
script de test
mocha-webpack --webpack-config webpack.config.js --require jsdom-global/register
dépendances
"jquery": "^3.2.1"
dépendances dev
"@types/chai": "^4.0.4"
"@types/jquery": "3.2.0"
"@types/mocha": "^2.2.42"
"chai": "^4.1.1"
"css-loader": "^0.28.5"
"jsdom": "^11.2.0",
"jsdom-global": "^3.0.2"
"mocha": "^3.5.0"
"mocha-typescript": "^1.1.7"
"mocha-webpack": "^1.0.0-rc.1"
"sass-loader": "^6.0.6"
"ts-loader": "^2.3.3"
"typescript": "^2.4.2"
"webpack": "^3.5.5"
webpack.config.js
const webpack = require("webpack");
module.exports = {
target: "node",
externals: ["jquery", "moment"],
resolve: {
extensions: [".ts", ".js"]
},
module: {
loaders: [
{ test: /\.ts$/, loader: "ts-loader" },
{ test: /\.scss$/, loaders: ['css-loader/locals?modules', 'sass-loader'] }
]
},
plugins: [
new webpack.ProvidePlugin({
$: "jQuery",
jQuery: "jQuery"
})
]
}
travis
language: node_js
node_js:
- "node"
cache:
directories:
- "node_modules"
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": true,
"removeComments": true,
"sourceMap": true,
"target": "es5",
"lib": ["es2016", "dom"],
"typeRoots": [
"node_modules/@types"
],
"experimentalDecorators": true // For the decorators in Mocha tests.
},
"compileOnSave": true,
"include": [
"src/**/*",
"test/*"
]
}