2016-09-09 3 views
2

У меня есть приложение Meteor, которое отлично работает на локальном хосте, но когда я его развертываю на удаленном сервере heroku, я получаю следующие ошибки.Ошибка: не удается найти модуль npm «момент»

(я реализую this)

Любые идеи, как это исправить, пожалуйста?

2016-09-09T13:26:02.533532+00:00 heroku[web.1]: Starting process with command `.meteor/heroku_build/bin/node .meteor/heroku_build/app/main.js` 
2016-09-09T13:26:06.806440+00:00 heroku[web.1]: Process exited with status 1 
2016-09-09T13:26:06.813921+00:00 heroku[web.1]: State changed from starting to crashed 
2016-09-09T13:26:06.704013+00:00 app[web.1]: /app/.meteor/heroku_build/app/programs/server/node_modules/fibers/future.js:280 
2016-09-09T13:26:06.704027+00:00 app[web.1]:      throw(ex); 
2016-09-09T13:26:06.704028+00:00 app[web.1]:      ^
2016-09-09T13:26:06.704029+00:00 app[web.1]: 
2016-09-09T13:26:06.704030+00:00 app[web.1]: Error: Can't find npm module 'moment'. Did you forget to call 'Npm.depends' in package.js within the 'modules-runtime' package? 
2016-09-09T13:26:06.704031+00:00 app[web.1]:  at Object.Npm.require (/app/.meteor/heroku_build/app/programs/server/boot.js:198:17) 
2016-09-09T13:26:06.704032+00:00 app[web.1]:  at options.fallback (packages/modules-runtime/modules-runtime.js:21:1) 
2016-09-09T13:26:06.704032+00:00 app[web.1]:  at require (packages/modules-runtime/.npm/package/node_modules/install/install.js:88:1) 
2016-09-09T13:26:06.704033+00:00 app[web.1]:  at meteorInstall.server.main.js (server/main.ts:1:19) 
2016-09-09T13:26:06.704035+00:00 app[web.1]:  at require (packages/modules-runtime/.npm/package/node_modules/install/install.js:82:1) 
2016-09-09T13:26:06.704035+00:00 app[web.1]:  at server/main.ts:65:4 
2016-09-09T13:26:06.704036+00:00 app[web.1]:  at /app/.meteor/heroku_build/app/programs/server/boot.js:292:10 
2016-09-09T13:26:06.704036+00:00 app[web.1]:  at Array.forEach (native) 

Если я heroku run bash для входа в герольку. В /app/typings/globals я вижу следующее:

es6-collections es6-promise google-maps google.maps meteor moment 

Это, кажется, соответствует тому, что находится на локальном хосте Windows:

enter image description here

Моменты существуют также в node_modules

enter image description here

Вот my node_modules\moment\package.js:

var profile = { 
    resourceTags: { 
     ignore: function(filename, mid){ 
      // only include moment/moment 
      return mid != "moment/moment"; 
     }, 
     amd: function(filename, mid){ 
      return /\.js$/.test(filename); 
     } 
    } 
}; 

Мой package.json:

{ 
    "dependencies": { 
    "@angular/common": "^2.0.0-rc.4", 
    "@angular/compiler": "^2.0.0-rc.4", 
    "@angular/core": "^2.0.0-rc.4", 
    "@angular/forms": "^0.2.0", 
    "@angular/http": "^2.0.0-rc.4", 
    "@angular/platform-browser": "^2.0.0-rc.4", 
    "@angular/platform-browser-dynamic": "^2.0.0-rc.4", 
    "@ionic/cloud-angular": "^0.4.0", 
    "angular2-meteor": "^0.6.2", 
    "angular2-moment": "^0.8.2", 
    "es6-shim": "^0.35.0", 
    "ionic-angular": "^2.0.0-beta.11", 
    "ionic-native": "1.3.2", 
    "ionicons": "3.0.0", 
    "meteor-client-side": "^1.3.4", 
    "moment": "^2.14.1", 
    "reflect-metadata": "^0.1.3", 
    "rxjs": "5.0.0-beta.6", 
    "socket.io": "^1.4.8", 
    "zone.js": "^0.6.12" 
    }, 

фрагмент из бревен при развертывании:

remote: -----> Building Meteor app with ROOT_URL: https://git.heroku.com/remote-thewhozoo.git 
remote: server/collections.ts (1, 21): Cannot find module 'meteor/mongo'. 
remote: server/collections.ts (2, 29): Cannot find module 'api/models'. 
remote: server/methods.ts (1, 22): Cannot find module 'meteor/meteor'. 
remote: server/methods.ts (2, 28): Cannot find module 'meteor/check'. 
remote: server/main.ts (1, 25): Cannot find module 'moment'. 
remote: server/main.ts (2, 22): Cannot find module 'meteor/meteor'. 
remote: 
remote: Unable to resolve some modules: 
remote: 
remote: "moment" in /tmp/build_29ec6195d953bd56c0670f7d9ee489a4/server/main.js 
remote: (os.linux.x86_64) 
remote: 
remote: If you notice problems related to these missing modules, consider running: 
remote: 
remote: meteor npm install --save moment 
remote: 
remote: -----> Moving built slug to /tmp/build_29ec6195d953bd56c0670f7d9ee489a4/.meteor/heroku_build/app 
remote: -----> Installing npm production dependencies on built slug 
remote: 
remote: > [email protected] install /tmp/build_29ec6195d953bd56c0670f7d9ee489a4/.meteor/heroku_build/app/programs/server/node_modules/fibers 
remote: > node build.js || nodejs build.js 
remote: 
remote: `linux-x64-v8-4.5` exists; testing 
remote: Binary is fine; exiting 
remote: 
remote: > [email protected] install /tmp/build_29ec6195d953bd56c0670f7d9ee489a4/.meteor/heroku_build/app/programs/server 
remote: > node npm-rebuild.js 
remote: 
remote: { 
remote: "meteor-dev-bundle": "0.0.0", 
remote: "npm": "3.10.6", 
remote: "ares": "1.10.1-DEV", 
remote: "http_parser": "2.7.0", 
remote: "icu": "56.1", 
remote: "modules": "46", 
remote: "node": "4.5.0", 
remote: "openssl": "1.0.2h", 
remote: "uv": "1.9.1", 
remote: "v8": "4.5.103.37", 
remote: "zlib": "1.2.8" 
remote: } 

index.d.ts

declare module 'moment' { 
    var moment: moment.MomentStatic; 
    export = moment; 
} 

У меня есть символические ссылки в корне проект метеора:

enter image description here

UPDATE

Я нашел эту проблему, я думаю, но я не уверен на 100%, как ее решить еще.

Проблема в том, что символические ссылки указывают на каталоги, которые существуют локально, но не на удаленном сервере.

enter image description here

UPDATE

Я удалить все символические ссылки, и есть файлы там вместо этого, развернуть, и я все еще получаю ту же ошибку, когда сервер пытается запустить:

2016-09-11T15:23:06.155551+00:00 heroku[web.1]: State changed from crashed to starting 
2016-09-11T15:23:09.146909+00:00 heroku[web.1]: Starting process with command `.meteor/heroku_build/bin/node .meteor/heroku_build/app/main.js` 
2016-09-11T15:23:13.712742+00:00 heroku[web.1]: State changed from starting to crashed 
2016-09-11T15:23:13.640003+00:00 app[web.1]: /app/.meteor/heroku_build/app/programs/server/node_modules/fibers/future.js:280 
2016-09-11T15:23:13.640048+00:00 app[web.1]:      throw(ex); 
2016-09-11T15:23:13.640073+00:00 app[web.1]:      ^
2016-09-11T15:23:13.640075+00:00 app[web.1]: Error: Can't find npm module 'moment'. Did you forget to call 'Npm.depends' in package.js within the 'modules-runtime' package? 
2016-09-11T15:23:13.640076+00:00 app[web.1]:  at Object.Npm.require (/app/.meteor/heroku_build/app/programs/server/boot.js:198:17) 
2016-09-11T15:23:13.640077+00:00 app[web.1]:  at options.fallback (packages/modules-runtime/modules-runtime.js:21:1) 
2016-09-11T15:23:13.640078+00:00 app[web.1]:  at meteorInstall.server.main.js (server/main.ts:1:19) 
2016-09-11T15:23:13.640079+00:00 app[web.1]:  at require (packages/modules-runtime/.npm/package/node_modules/install/install.js:82:1) 
2016-09-11T15:23:13.640079+00:00 app[web.1]:  at server/main.ts:65:4 
2016-09-11T15:23:13.723869+00:00 heroku[web.1]: Process exited with status 1 

Любые идеи, пожалуйста?

Я бежал: meteor npm install --save

Я нашел это в boot.js, но я не уверен, что автор делает.

try { 
     return require(name); 
    } catch (e) { 
     // Try to guess the package name so we can print a nice 
     // error message 
     // fileInfo.path is a standard path, use files.pathSep 
     var filePathParts = fileInfo.path.split(files.pathSep); 
     var packageName = filePathParts[1].replace(/\.js$/, ''); 

     // XXX better message 
     throw new Error(
     "Can't find npm module '" + name + 
      "'. Did you forget to call 'Npm.depends' in package.js " + 
      "within the '" + packageName + "' package?"); 
     } 

UPDATE

Я удалил .gitignore из node_modules/, и я не получаю никаких ошибок в настоящее время.

enter image description here

Однако, я новичок в Метеор, поэтому не знаю, как проверить это. Но когда я пытаюсь вызвать приложение с http://remote-thewhozoo.herokuapp.com/ или https://remote-thewhozoo.herokuapp.com/ я получаю ошибку 404:

2016-09-11T16:20:15.183895+00:00 heroku[router]: at=info method=GET path="/sockjs/info?cb=jwgw2yuvgl" host=remote-thewhozoo.herokuapp.com request_id=a49fafb2-9708-46d2-8117-2c789bfa6a3e fwd="105.186.215.147" dyno=web.1 connect=1ms service=2ms status=404 bytes=132 

enter image description here

Я проверить базу данных Монго, и он попал в коллекцию, созданную мое приложение. Так что Метеор должен работать, я просто не знаю, как получить к нему доступ.

enter image description here

Любые идеи, пожалуйста?

+0

Мой локальный хост - это компьютер с Windows, а героку - Linux. Возможно, это из-за проблемы чувствительности к регистру или чего-то еще? – Richard

ответ

0

Можете ли вы попробовать meteor npm install в своем проекте root?

Если момент не указан в этом списке, можете ли вы попробовать meteor npm install --save moment?

В противном случае, могли бы вы опубликовать package.js - это должно быть в приложении/программах/сервере/

+0

Спасибо, я сейчас занят этим. Я просто делаю «git push». Быстрый вопрос: правильно ли иметь 'gitignore'' node_modules'? – Richard

+0

Это нормально, просто запомните «npm install» каждый раз, когда вы клонируете его на новый компьютер или тянете после изменения каких-либо зависимостей. – sitarhero

+0

Я стараюсь «meteor npm install --save moment», но затем, когда я пытаюсь сделать «git add/commit/push», он говорит, что никаких изменений не сделано. 'Ваша ветка обновлена ​​с 'origin/master'' Любые идеи, пожалуйста? – Richard

4

Убедитесь, что эта линией: "moment": "^2.14.1" Ваш package.json затем запустить npm install

+0

Я только что добавил 'package.json' к вопросу выше. У него действительно есть «момент»: «^ 2.14.1» ' – Richard

+1

Если проблема все еще существует, я бы выполнил как« npm install -g moment », так и« npm install moment », где позже, очевидно, находится в вашем корневом каталоге meteor. – Loay

+0

Я стараюсь «meteor npm install --save moment» & 'npm install -g moment' &' npm install moment', но затем, когда я пытаюсь сделать «git add/commit/push», он говорит, что никаких изменений не сделано. 'Ваша ветка обновлена ​​с 'origin/master'' Любые идеи, пожалуйста? – Richard

Смежные вопросы