![](/img/trans.png)
[英]MUI : Module not found "Module not found: Error: Can't resolve 'moment' "
[英]Error: Can't find npm module 'moment'
我有一個在本地主機上完美運行的 Meteor 應用程序,但是當我將它部署到遠程heroku
服務器時,我收到以下錯誤。
(我正在實施 這個)
有什么想法可以解決這個問題嗎?
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
登錄到 heroku。 在/app/typings/globals
我看到以下內容:
es6-collections es6-promise google-maps google.maps meteor moment
這似乎與 Windows localhost 上的內容相匹配:
時刻也存在於node_modules
這是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: > fibers@1.0.13 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: > meteor-dev-bundle@0.0.0 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: }
索引.d.ts
declare module 'moment' {
var moment: moment.MomentStatic;
export = moment;
}
我在 meteor 項目的根目錄中有符號鏈接:
更新
我發現了我認為的問題,但我還不是 100% 確定如何解決它。
問題是符號鏈接指向本地存在的目錄,但不在遠程服務器上。
更新
我刪除了所有符號鏈接,並將文件放在那里,然后部署,當服務器嘗試啟動時,我仍然收到相同的錯誤:
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?");
}
更新
我刪除了node_modules/
的.gitignore
,現在我沒有收到任何錯誤。
但是,我是 Meteor 的新手,所以不知道如何測試它。 但是,當我嘗試使用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
我確實檢查了 Mongo 數據庫,它有我的應用程序創建的 collections。 所以 Meteor 必須在運行,我只是不知道如何訪問它。
請問有什么想法嗎?
確保這一行: "moment": "^2.14.1"
是你的package.json然后運行npm install
你能在你的項目根目錄中嘗試meteor npm install
嗎?
如果時刻沒有出現在那個列表中,你可以試試meteor npm install --save moment
嗎?
否則,你可以發布你的package.js - 它應該在app / programs / server /
我認為這是你的buildpack的一個問題。 請嘗試遵循本指南 - https://meteorcoder.wordpress.com/2016/09/24/how-to-deploy-meteor-apps-with-heroku/
我跑了: npm install moment react-moment & 它起作用了。 官方 npm 站點有兩種不同的安裝方式,它們都給了我錯誤。
要解決錯誤"Cannot find module 'moment'"
,請確保通過在項目的根目錄中打開終端並運行以下命令來安裝moment package: npm i moment
並重新啟動您的 Z581D6381F3F387B364 和開發服務器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.