2016-11-21 81 views
2

我有一個反應web應用程序,它使用webpack。如何在visual studio在線構建過程中運行我的mocha.js測試

由於Left-pad的問題,我在源代碼控制中包含了我的node_modules文件夾。

我有摩卡和酶設置單元測試我的反應模塊和我的packages.json具有以下測試配置。

"test": "mocha-webpack --webpack-config webpack.config-test.js \"source/**/*.test.js\"" 

這一切都很好。當我在本地開發機上運行

npm run test 

。我所有的測試都得到執行。

我的問題是,當我運行「故宮運行測試」作爲一個新建的機器,我得到以下錯誤

Error: Cannot find module 'enzyme' 

一些周圍挖掘後,在構建過程中,我發現,如果我跑

npm install enzyme 

在生成機器之前我跑了測試,然後它工作正常。 這個工作的原因是安裝修改了我的node_modules /酶/ packages.json文件。有2個完整路徑存儲在這個文件中,這些路徑包含我的本地開發環境的路徑,並且它們被更改爲我的項目在構建機器上運行的完整路徑。

一個下_args和一個下_where

{ 
    "_args": [ 
    [ 
     { 
     "raw": "[email protected]^2.6.0", 
     "scope": null, 
     "escapedName": "enzyme", 
     "name": "enzyme", 
     "rawSpec": "^2.6.0", 
     "spec": ">=2.6.0 <3.0.0", 
     "type": "range" 
     }, 
     "C:\\Dev\\UnifiedWeb" 
    ] 
    ], 
    "_from": "[email protected]>=2.6.0 <3.0.0", 
    "_id": "[email protected]", 
    "_inCache": true, 
    "_location": "/enzyme", 
    "_nodeVersion": "7.0.0", 
    "_npmOperationalInternal": { 
    "host": "packages-12-west.internal.npmjs.com", 
    "tmp": "tmp/enzyme-2.6.0.tgz_1478746866117_0.454174768878147" 
    }, 
    "_npmUser": { 
    "name": "ljharb", 
    "email": "[email protected]" 
    }, 
    "_npmVersion": "3.10.8", 
    "_phantomChildren": {}, 
    "_requested": { 
    "raw": "[email protected]^2.6.0", 
    "scope": null, 
    "escapedName": "enzyme", 
    "name": "enzyme", 
    "rawSpec": "^2.6.0", 
    "spec": ">=2.6.0 <3.0.0", 
    "type": "range" 
    }, 
    "_requiredBy": [ 
    "#DEV:/", 
    "#USER" 
    ], 
    "_resolved": "https://registry.npmjs.org/enzyme/-/enzyme-2.6.0.tgz", 
    "_shasum": "148d742b25e2565f7e80870a0c92aea9be1b90ea", 
    "_shrinkwrap": null, 
    "_spec": "[email protected]^2.6.0", 
    "_where": "C:\\Dev\\UnifiedWeb", 
    "author": { 
    "name": "Leland Richardson", 
    "email": "[email protected]" 
    }, 
    "bugs": { 
    "url": "https://github.com/airbnb/enzyme/issues" 
    }, 
    "dependencies": { 
    "cheerio": "^0.22.0", 
    "function.prototype.name": "^1.0.0", 
    "in-publish": "^2.0.0", 
    "is-subset": "^0.1.1", 
    "lodash": "^4.16.4", 
    "object-is": "^1.0.1", 
    "object.assign": "^4.0.4", 
    "object.entries": "^1.0.3", 
    "object.values": "^1.0.3", 
    "uuid": "^2.0.3" 
    }, 
    "description": "JavaScript Testing utilities for React", 
    "devDependencies": { 
    "babel-cli": "^6.18.0", 
    "babel-core": "^6.18.2", 
    "babel-eslint": "^7.1.0", 
    "babel-loader": "^6.2.7", 
    "babel-preset-airbnb": "^2.1.1", 
    "babel-register": "^6.18.0", 
    "chai": "^3.5.0", 
    "coveralls": "^2.11.14", 
    "enzyme-example-jest": "^0.1.0", 
    "enzyme-example-karma": "^0.1.1", 
    "enzyme-example-karma-webpack": "^0.1.4", 
    "enzyme-example-mocha": "^0.1.0", 
    "enzyme-example-react-native": "^0.1.0", 
    "eslint": "^3.9.1", 
    "eslint-config-airbnb": "^13.0.0", 
    "eslint-plugin-import": "^2.2.0", 
    "eslint-plugin-jsx-a11y": "^2.2.3", 
    "eslint-plugin-react": "^6.6.0", 
    "gitbook-cli": "^1.0.1", 
    "istanbul": "^1.0.0-alpha.2", 
    "jsdom": "^6.1.0", 
    "json-loader": "^0.5.4", 
    "karma": "^1.3.0", 
    "karma-chrome-launcher": "^1.0.1", 
    "karma-firefox-launcher": "^1.0.0", 
    "karma-mocha": "^1.2.0", 
    "karma-sourcemap-loader": "^0.3.7", 
    "karma-webpack": "^1.8.0", 
    "mocha": "^3.1.2", 
    "rimraf": "^2.5.4", 
    "safe-publish-latest": "^1.1.1", 
    "sinon": "^1.17.6", 
    "webpack": "^1.13.3" 
    }, 
    "directories": {}, 
    "dist": { 
    "shasum": "148d742b25e2565f7e80870a0c92aea9be1b90ea", 
    "tarball": "https://registry.npmjs.org/enzyme/-/enzyme-2.6.0.tgz" 
    }, 
    "gitHead": "5c37d91715a88d393f3c260447a189a446d76e0c", 
    "homepage": "https://github.com/airbnb/enzyme#readme", 
    "keywords": [ 
    "javascript", 
    "shallow rendering", 
    "shallowRender", 
    "test", 
    "reactjs", 
    "react", 
    "flux", 
    "testing", 
    "test utils", 
    "assertion helpers", 
    "tdd", 
    "mocha" 
    ], 
    "license": "MIT", 
    "main": "build", 
    "maintainers": [ 
    { 
     "name": "airbnb", 
     "email": "[email protected]" 
    }, 
    { 
     "name": "intelligibabble", 
     "email": "[email protected]" 
    }, 
    { 
     "name": "ljharb", 
     "email": "[email protected]" 
    } 
    ], 
    "name": "enzyme", 
    "optionalDependencies": {}, 
    "peerDependencies": { 
    "react": "0.13.x || 0.14.x || ^15.0.0-0 || 15.x" 
    }, 
    "readme": "ERROR: No README data found!", 
    "repository": { 
    "type": "git", 
    "url": "git+https://github.com/airbnb/enzyme.git" 
    }, 
    "scripts": { 
    "build": "babel src --out-dir build", 
    "check": "npm run lint && npm run test:all", 
    "clean": "rimraf build", 
    "docs:build": "npm run docs:prepare && gitbook build", 
    "docs:clean": "rimraf _book", 
    "docs:prepare": "gitbook install", 
    "docs:publish": "npm run docs:clean && npm run docs:build && cd _book && git init && git commit --allow-empty -m 'update book' && git fetch [email protected]:airbnb/enzyme.git gh-pages && git checkout -b gh-pages && git add . && git commit -am 'update book' && git push [email protected]:airbnb/enzyme.git gh-pages --force", 
    "docs:watch": "npm run docs:prepare && gitbook serve", 
    "lint": "eslint --ext js,jsx src test", 
    "postversion": "git push && git push --tags && npm run clean && npm run docs:publish", 
    "prepublish": "not-in-publish || (npm run clean && npm run build && safe-publish-latest)", 
    "pretest": "npm run lint", 
    "preversion": "npm run clean && npm run check", 
    "react:13": "npm run react:clean && npm i [email protected]", 
    "react:14": "npm run react:clean && npm i [email protected] [email protected] [email protected]", 
    "react:15": "npm run react:clean && npm i [email protected] [email protected] [email protected]", 
    "react:clean": "rimraf node_modules/react node_modules/react-dom node_modules/react-addons-test-utils", 
    "test": "npm run clean && npm run build && npm run test:only", 
    "test:all": "npm run react:13 && npm run test:only && npm run react:14 && npm run test:only && npm run react:15 && npm run test:only", 
    "test:env": "sh ./example-test.sh", 
    "test:karma": "karma start", 
    "test:only": "mocha --recursive test", 
    "test:single": "mocha --watch", 
    "test:watch": "mocha --recursive --watch test", 
    "travis": "babel-node ./node_modules/.bin/istanbul cover --report html _mocha -- test --recursive", 
    "version": "npm run build" 
    }, 
    "version": "2.6.0" 
} 

此問題也會影響其他開發商在我的球隊,因爲路徑將需要更改自己的地方發展,如果他們想在本地運行測試。

爲什麼酶包裝中的完整路徑?有沒有更好的方法來處理這個問題?我錯過了什麼,或者是npm不是便攜式的?

+0

你碰巧使用'NPM shrinkwrap'?看看['enzyme'' package.json'](https://github.com/airbnb/enzyme/blob/master/package.json)文件,它似乎沒有本地路徑。 – MarcoL

+0

謝謝Marcol。我剛添加了我的酶/ package.json。我認爲NPM不添加酶 –

回答

相關問題