这是一个旧的mean.js
项目。项目node
版本4.4.4
。我可以使用node 10.24.1
在本地机器上运行此项目。
当我在heroku
中部署这个项目时,许多TypeErrors
出现在terminal
中,而node-modules
包正在下载。我遵循了一些答案来解决这个问题,但不幸的是,我不能成功,这就是我在这里提问的原因。
我的package-lock
文件已更新。
Build Logs
如下:
Enumerating objects: 28099, done.
Counting objects: 100% (28099/28099), done.
Delta compression using up to 6 threads
Compressing objects: 100% (15109/15109), done.
Writing objects: 100% (28099/28099), 58.86 MiB | 343.00 KiB/s, done.
Total 28099 (delta 10970), reused 27836 (delta 10797), pack-reused 0
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Building on the Heroku-20 stack
remote: -----> Deleting 1 files matching .slugignore patterns.
remote: -----> Determining which buildpack to use for this app
remote: -----> Node.js app detected
remote:
remote: -----> Creating runtime environment
remote:
remote: NPM_CONFIG_LOGLEVEL=error
remote: NODE_VERBOSE=false
remote: NODE_ENV=production
remote: NODE_MODULES_CACHE=true
remote:
remote: -----> Installing binaries
remote: engines.node (package.json): 4.4.4
remote: engines.npm (package.json): 3.8.x
remote:
remote: Resolving node version 4.4.4...
remote: Downloading and installing node 4.4.4...
remote: Bootstrapping npm 3.8.x (replacing 2.15.1)...
remote: npm 3.8.x installed
remote:
remote: -----> Installing dependencies
remote: Installing node modules (package.json + package-lock)
remote: npm ERR! Linux 4.4.0-1101-aws
remote: npm ERR! argv "/tmp/build_648a0567/.heroku/node/bin/node" "/tmp/build_648a0567/.heroku/node/bin/npm" "install" "--production=false" "--unsafe-perm" "--userconfig" "/tmp/build_648a0567/.npmrc"
remote: npm ERR! node v4.4.4
remote: npm ERR! npm v3.8.9
remote: npm ERR! code EMISSINGARG
remote:
remote: npm ERR! typeerror Error: Missing required argument #1
remote: npm ERR! typeerror at andLogAndFinish (/tmp/build_648a0567/.heroku/node/lib/node_modules/npm/lib/fetch-package-metadata.js:31:3)
remote: npm ERR! typeerror at fetchPackageMetadata (/tmp/build_648a0567/.heroku/node/lib/node_modules/npm/lib/fetch-package-metadata.js:51:22)
remote: npm ERR! typeerror at resolveWithNewModule (/tmp/build_648a0567/.heroku/node/lib/node_modules/npm/lib/install/deps.js:455:12)
remote: npm ERR! typeerror at /tmp/build_648a0567/.heroku/node/lib/node_modules/npm/lib/install/deps.js:456:7
remote: npm ERR! typeerror at /tmp/build_648a0567/.heroku/node/lib/node_modules/npm/node_modules/iferr/index.js:13:50
remote: npm ERR! typeerror at /tmp/build_648a0567/.heroku/node/lib/node_modules/npm/lib/fetch-package-metadata.js:37:12
remote: npm ERR! typeerror at addRequestedAndFinish (/tmp/build_648a0567/.heroku/node/lib/node_modules/npm/lib/fetch-package-metadata.js:82:5)
remote: npm ERR! typeerror at returnAndAddMetadata (/tmp/build_648a0567/.heroku/node/lib/node_modules/npm/lib/fetch-package-metadata.js:118:7)
remote: npm ERR! typeerror at pickVersionFromRegistryDocument (/tmp/build_648a0567/.heroku/node/lib/node_modules/npm/lib/fetch-package-metadata.js:135:20)
remote: npm ERR! typeerror at /tmp/build_648a0567/.heroku/node/lib/node_modules/npm/node_modules/iferr/index.js:13:50
remote: npm ERR! typeerror This is an error with npm itself. Please report this error at:
remote: npm ERR! typeerror <http://github.com/npm/npm/issues>
remote: npm ERR! Linux 4.4.0-1101-aws
remote: npm ERR! argv "/tmp/build_648a0567/.heroku/node/bin/node" "/tmp/build_648a0567/.heroku/node/bin/npm" "install" "--production=false" "--unsafe-perm" "--userconfig" "/tmp/build_648a0567/.npmrc"
remote: npm ERR! node v4.4.4
remote: npm ERR! npm v3.8.9
remote: npm ERR! code EMISSINGARG
remote:
remote: npm ERR! typeerror Error: Missing required argument #1
remote: npm ERR! typeerror at andLogAndFinish (/tmp/build_648a0567/.heroku/node/lib/node_modules/npm/lib/fetch-package-metadata.js:31:3)
remote: npm ERR! typeerror at fetchPackageMetadata (/tmp/build_648a0567/.heroku/node/lib/node_modules/npm/lib/fetch-package-metadata.js:51:22)
remote: npm ERR! typeerror at resolveWithNewModule (/tmp/build_648a0567/.heroku/node/lib/node_modules/npm/lib/install/deps.js:455:12)
remote: npm ERR! typeerror at /tmp/build_648a0567/.heroku/node/lib/node_modules/npm/lib/install/deps.js:456:7
remote: npm ERR! typeerror at /tmp/build_648a0567/.heroku/node/lib/node_modules/npm/node_modules/iferr/index.js:13:50
remote: npm ERR! typeerror at /tmp/build_648a0567/.heroku/node/lib/node_modules/npm/lib/fetch-package-metadata.js:37:12
remote: npm ERR! typeerror at addRequestedAndFinish (/tmp/build_648a0567/.heroku/node/lib/node_modules/npm/lib/fetch-package-metadata.js:82:5)
remote: npm ERR! typeerror at returnAndAddMetadata (/tmp/build_648a0567/.heroku/node/lib/node_modules/npm/lib/fetch-package-metadata.js:118:7)
remote: npm ERR! typeerror at pickVersionFromRegistryDocument (/tmp/build_648a0567/.heroku/node/lib/node_modules/npm/lib/fetch-package-metadata.js:135:20)
remote: npm ERR! typeerror at /tmp/build_648a0567/.heroku/node/lib/node_modules/npm/node_modules/iferr/index.js:13:50
remote: npm ERR! typeerror This is an error with npm itself. Please report this error at:
remote: npm ERR! typeerror <http://github.com/npm/npm/issues>
remote:
remote: npm ERR! Please include the following file with any support request:
remote: npm ERR! /tmp/build_648a0567/npm-debug.log
remote:
remote: -----> Build failed
package.json文件
{
"name": "...",
"description": "Full-Stack JavaScript with MongoDB, Express, AngularJS, and Node.js",
"version": "0.0.1",
"author": "...",
"engines": {
"node": "4.4.4",
"npm": "3.8.x"
},
"scripts": {
"start": "grunt",
"debug": "grunt debug",
"test": "grunt test",
"postinstall": "bower install --config.interactive=false"
},
"dependencies": {
"async": "~0.9.0",
"body-parser": "~1.9.0",
"bower": "~1.3.8",
"chalk": "~0.5",
"compression": "~1.2.0",
"connect-flash": "~0.1.1",
"connect-mongo": "^1.1.0",
"connect-mongodb-session": "^2.1.1",
"consolidate": "~0.10.0",
"cookie-parser": "~1.3.2",
"dotenv": "^16.0.0",
"express": "^4.13.4",
"express-session": "^1.13.0",
"forever": "~0.11.0",
"glob": "~4.0.5",
"gridfs-stream": "^1.1.1",
"grunt-cli": "~0.1.13",
"helmet": "~0.5.0",
"lodash": "^4.12.0",
"method-override": "~2.3.0",
"mongoose": "4.7.3",
"morgan": "~1.4.1",
"multer": "^1.1.0",
"nodemailer": "~2.4.1",
"passport": "~0.2.0",
"passport-facebook": "~1.0.2",
"passport-github": "~0.1.5",
"passport-google-oauth": "~0.1.5",
"passport-linkedin": "~0.1.3",
"passport-local": "~1.0.0",
"passport-twitter": "~1.0.2",
"paypal-rest-sdk": "^1.6.8",
"q": "^1.5.1",
"stripe": "^4.6.0",
"swig": "~1.4.1",
"validator": "^5.2.0"
},
"devDependencies": {
"grunt": "^1.0.1",
"grunt-concurrent": "^2.3.0",
"grunt-contrib-csslint": "^1.0.0",
"grunt-contrib-cssmin": "^1.0.1",
"grunt-contrib-jshint": "^1.0.0",
"grunt-contrib-uglify": "^1.0.1",
"grunt-contrib-watch": "^1.0.0",
"grunt-env": "^0.4.4",
"grunt-karma": "^1.0.0",
"grunt-mocha-test": "^0.12.7",
"grunt-ng-annotate": "^2.0.2",
"grunt-nodemon": "^0.4.2",
"karma": "^0.13.22",
"karma-chrome-launcher": "^1.0.1",
"karma-coverage": "^1.0.0",
"karma-firefox-launcher": "^0.1.7",
"karma-jasmine": "^1.0.2",
"karma-phantomjs-launcher": "^1.0.0",
"load-grunt-tasks": "^3.5.0",
"mocha": "^2.4.5",
"should": "^8.3.1",
"supertest": "^1.2.0"
}
}
由于这个项目在我本地机器上的node 10.24.1
上运行,如果heroku's
node version
在运行时降级为10.24.1
(如果可能的话(,它可以在heroku
上构建,我想,但我不确定。
请有人回答这个问题或建议吗?提前感谢!
Node.js 4.4.4绝对是古老的。
它甚至没有出现在这个发布页面上,部分内容是:
六个月后,奇数版本(9、11等(将不受支持,偶数版本(10、12等(将移至活动LTS状态,并可供一般使用TTS发布状态为";长期支持";,这通常保证关键错误将被修复总共30个月。
4.4版本远远超出了其维护窗口,我强烈敦促您升级此项目。
话虽如此,你很有可能让Heroku运行Node.js 10来匹配你的本地版本。Heroku只正式支持当前和活动的LTS版本,但它不会阻止您使用旧版本:
由于Heroku基于标准的Ubuntu Linux堆栈,因此您可以在该平台上运行大多数Node版本(
>= 0.10.0
(。然而,构建包的测试和支持重点将围绕活动的LTS和稳定版本。
更新package.json
:中的engines
部分
"engines": {
"node": "10.x"
},
我在这里还删除了npm
版本,这将导致Heroku使用与最新Node.js10.x版本捆绑在一起的任何版本。
提交此更改,然后重新部署。