npm 不安装 node-gyp,错误:“class v8::Object”没有名为“ForceSet”的成员

Shu*_*haw 12 ubuntu node.js node-gyp ubuntu-18.04

工作中的第一个项目在 Ubuntu 上遇到了这个繁琐的错误。

\n\n

目前使用node -v 13.8.0,安装了python 2.7.17,GCC 7.5.0

\n\n

还检查了 node-gyp npm 页面并安装了所有 python 和 gcc 依赖项。\n这是我的 package.json 文件

\n\n
  "dependencies": {\n    "apn": "^2.1.5",\n    "async": "^1.5.2",\n    "bcrypt-nodejs": "^0.0.3",\n    "body-parser": "^1.15.1",\n    "compression": "^1.6.2",\n    "consolidate": "^0.14.5",\n    "cookie-parser": "^1.4.1",\n    "cors": "^2.8.4",\n    "dotenv": "^2.0.0",\n    "express": "^4.13.4",\n    "express-validator": "^2.20.4",\n    "fcm-node": "^1.2.0",\n    "geocoder": "^0.2.3",\n    "jimp": "^0.2.28",\n    "jsonwebtoken": "^5.7.0",\n    "moment": "^2.12.0",\n    "moment-timezone": "^0.5.14",\n    "mongoose": "^4.4.8",\n    "mongoose-unique-validator": "^1.0.6",\n    "morgan": "^1.7.0",\n    "multer": "^1.3.0",\n    "mustache": "^2.3.0",\n    "node-cron": "^1.2.1",\n    "node-excel-export": "^1.4.4",\n    "nodemailer": "^2.3.0",\n    "nodemailer-mailgun-transport": "^1.3.5",\n    "nodemailer-smtp-transport": "^2.7.4",\n    "qr-image": "^3.2.0",\n    "randomstring": "^1.1.5",\n    "request": "^2.69.0",\n    "soap": "^0.23.0",\n    "socket.io": "^2.0.3",\n    "strong-soap": "^1.5.0",\n    "swagger-jsdoc": "^1.9.3",\n    "swagger-ui-express": "^1.0.7",\n    "time": "^0.12.0",\n    "twilio": "^3.9.1",\n    "underscore": "^1.8.3",\n    "uuid": "^3.2.1",\n    "ws.js": "^2.0.23"\n  },\n  "devDependencies": {},\n  "engines": {\n    "node": "6.9.5"\n  }\n
Run Code Online (Sandbox Code Playgroud)\n\n
npm install\n\n> ursa@0.9.4 install /home/shubham/Desktop/hotel/demo_hotellife_api/node_modules/ursa\n> node-gyp rebuild\n\nmake: Entering directory \'/home/shubham/Desktop/hotel/demo_hotellife_api/node_modules/ursa/build\'\n  CXX(target) Release/obj.target/ursaNative/src/ursaNative.o\nIn file included from ../../nan/nan.h:192:0,\n                 from ../src/ursaNative.h:10,\n                 from ../src/ursaNative.cc:3:\n../../nan/nan_maybe_43_inl.h: In function \xe2\x80\x98Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)\xe2\x80\x99:\n../../nan/nan_maybe_43_inl.h:112:15: error: \xe2\x80\x98class v8::Object\xe2\x80\x99 has no member named \xe2\x80\x98ForceSet\xe2\x80\x99\n   return obj->ForceSet(isolate->GetCurrentContext(), key, value, attribs);\n               ^~~~~~~~\nIn file included from ../../nan/nan_converters.h:67:0,\n                 from ../../nan/nan.h:197,\n                 from ../src/ursaNative.h:10,\n                 from ../src/ursaNative.cc:3:\n../../nan/nan_converters_43_inl.h: In static member function \xe2\x80\x98static Nan::imp::ToFactoryBase<v8::Boolean>::return_t Nan::imp::ToFactory<v8::Boolean>::convert(v8::Local<v8::Value>)\xe2\x80\x99:\n../../nan/nan_converters_43_inl.h:18:69: error: no matching function for call to \xe2\x80\x98v8::Value::ToBoolean(v8::Local<v8::Context>)\xe2\x80\x99\n       val->To ## TYPE(v8::Isolate::GetCurrent()->GetCurrentContext())          \\\n                                                                     ^\n../../nan/nan_converters_43_inl.h:22:1: note: in expansion of macro \xe2\x80\x98X\xe2\x80\x99\n X(Boolean)\n ^\n\nIn file included from /home/shubham/.cache/node-gyp/13.8.0/include/node/node.h:63:0,\n                 from ../../nan/nan.h:49,\n                 from ../src/time.cc:5:\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:2750:44: note: candidate: v8::MaybeLocal<v8::String> v8::Value::ToString(v8::Local<v8::Context>) const\n   V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(\n                                            ^~~~~~~~\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:2750:44: note:   candidate expects 1 argument, 0 provided\nIn file included from ../src/time.cc:5:0:\n../../nan/nan.h:921:74: error: no matching function for call to \xe2\x80\x98v8::String::WriteUtf8(char*&, int, int, const int&)\xe2\x80\x99\n         length_ = string->WriteUtf8(str_, static_cast<int>(len), 0, flags);\n                                                                          ^\nIn file included from /home/shubham/.cache/node-gyp/13.8.0/include/node/node.h:63:0,\n                 from ../../nan/nan.h:49,\n                 from ../src/time.cc:5:\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:2947:7: note: candidate: int v8::String::WriteUtf8(v8::Isolate*, char*, int, int*, int) const\n   int WriteUtf8(Isolate* isolate, char* buffer, int length = -1,\n       ^~~~~~~~~\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:2947:7: note:   no known conversion for argument 1 from \xe2\x80\x98char*\xe2\x80\x99 to \xe2\x80\x98v8::Isolate*\xe2\x80\x99\nIn file included from ../src/time.cc:5:0:\n../../nan/nan.h: In member function \xe2\x80\x98v8::Local<v8::Value> Nan::Callback::Call_(v8::Isolate*, v8::Local<v8::Object>, int, v8::Local<v8::Value>*) const\xe2\x80\x99:\n../../nan/nan.h:1479:5: warning: \xe2\x80\x98v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)\xe2\x80\x99 is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]\n     ));\n     ^\nIn file included from ../../nan/nan.h:49:0,\n                 from ../src/time.cc:5:\n/home/shubham/.cache/node-gyp/13.8.0/include/node/node.h:180:50: note: declared here\n                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(\n                                                  ^\n/home/shubham/.cache/node-gyp/13.8.0/include/node/node.h:99:42: note: in definition of macro \xe2\x80\x98NODE_DEPRECATED\xe2\x80\x99\n     __attribute__((deprecated(message))) declarator\n                                          ^~~~~~~~~~\nIn file included from ../src/time.cc:5:0:\n../../nan/nan.h: In member function \xe2\x80\x98void Nan::AsyncWorker::SaveToPersistent(const char*, const v8::Local<v8::Value>&)\xe2\x80\x99:\n../../nan/nan.h:1533:64: error: no matching function for call to \xe2\x80\x98v8::Object::Set(v8::Local<v8::String>, const v8::Local<v8::Value>&)\xe2\x80\x99\n     New(persistentHandle)->Set(New(key).ToLocalChecked(), value);\n                                                                ^\nIn file included from /home/shubham/.cache/node-gyp/13.8.0/include/node/node.h:63:0,\n                 from ../../nan/nan.h:49,\n                 from ../src/time.cc:5:\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3547:37: note: candidate: v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::Value>)\n   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context,\n                                     ^~~\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3547:37: note:   candidate expects 3 arguments, 2 provided\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3550:37: note: candidate: v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, uint32_t, v8::Local<v8::Value>)\n   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, uint32_t index,\n                                     ^~~\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3550:37: note:   candidate expects 3 arguments, 2 provided\nIn file included from ../src/time.cc:5:0:\n../../nan/nan.h: In member function \xe2\x80\x98void Nan::AsyncWorker::SaveToPersistent(const v8::Local<v8::String>&, const v8::Local<v8::Value>&)\xe2\x80\x99:\n../../nan/nan.h:1539:42: error: no matching function for call to \xe2\x80\x98v8::Object::Set(const v8::Local<v8::String>&, const v8::Local<v8::Value>&)\xe2\x80\x99\n     New(persistentHandle)->Set(key, value);\n                                          ^\nIn file included from /home/shubham/.cache/node-gyp/13.8.0/include/node/node.h:63:0,\n                 from ../../nan/nan.h:49,\n                 from ../src/time.cc:5:\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3547:37: note: candidate: v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::Value>)\n   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context,\n                                     ^~~\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3547:37: note:   candidate expects 3 arguments, 2 provided\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3550:37: note: candidate: v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, uint32_t, v8::Local<v8::Value>)\n   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, uint32_t index,\n                                     ^~~\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3550:37: note:   candidate expects 3 arguments, 2 provided\nIn file included from ../src/time.cc:5:0:\n../../nan/nan.h: In member function \xe2\x80\x98void Nan::AsyncWorker::SaveToPersistent(uint32_t, const v8::Local<v8::Value>&)\xe2\x80\x99:\n../../nan/nan.h:1545:44: error: no matching function for call to \xe2\x80\x98v8::Object::Set(uint32_t&, const v8::Local<v8::Value>&)\xe2\x80\x99\n     New(persistentHandle)->Set(index, value);\n                                            ^\nIn file included from /home/shubham/.cache/node-gyp/13.8.0/include/node/node.h:63:0,\n                 from ../../nan/nan.h:49,\n                 from ../src/time.cc:5:\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3547:37: note: candidate: v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::Value>)\n   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context,\n                                     ^~~\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3547:37: note:   candidate expects 3 arguments, 2 provided\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3550:37: note: candidate: v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, uint32_t, v8::Local<v8::Value>)\n   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, uint32_t index,\n                                     ^~~\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3550:37: note:   candidate expects 3 arguments, 2 provided\nIn file included from ../src/time.cc:5:0:\n../../nan/nan.h: In member function \xe2\x80\x98v8::Local<v8::Value> Nan::AsyncWorker::GetFromPersistent(const char*) const\xe2\x80\x99:\n../../nan/nan.h:1551:61: error: no matching function for call to \xe2\x80\x98v8::Object::Get(v8::Local<v8::String>)\xe2\x80\x99\n         New(persistentHandle)->Get(New(key).ToLocalChecked()));\n                                                             ^\nIn file included from /home/shubham/.cache/node-gyp/13.8.0/include/node/node.h:63:0,\n                 from ../../nan/nan.h:49,\n                 from ../src/time.cc:5:\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)\n   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,\n                                           ^~~\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)\n   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,\n                                           ^~~\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided\nIn file included from ../src/time.cc:5:0:\n../../nan/nan.h: In member function \xe2\x80\x98v8::Local<v8::Value> Nan::AsyncWorker::GetFromPersistent(const v8::Local<v8::String>&) const\xe2\x80\x99:\n../../nan/nan.h:1557:55: error: no matching function for call to \xe2\x80\x98v8::Object::Get(const v8::Local<v8::String>&)\xe2\x80\x99\n     return scope.Escape(New(persistentHandle)->Get(key));\n                                                       ^\nIn file included from /home/shubham/.cache/node-gyp/13.8.0/include/node/node.h:63:0,\n                 from ../../nan/nan.h:49,\n                 from ../src/time.cc:5:\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)\n   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,\n                                           ^~~\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)\n   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,\n                                           ^~~\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided\nIn file included from ../src/time.cc:5:0:\n../../nan/nan.h: In member function \xe2\x80\x98v8::Local<v8::Value> Nan::AsyncWorker::GetFromPersistent(uint32_t) const\xe2\x80\x99:\n../../nan/nan.h:1562:57: error: no matching function for call to \xe2\x80\x98v8::Object::Get(uint32_t&)\xe2\x80\x99\n     return scope.Escape(New(persistentHandle)->Get(index));\n                                                         ^\nIn file included from /home/shubham/.cache/node-gyp/13.8.0/include/node/node.h:63:0,\n                 from ../../nan/nan.h:49,\n                 from ../src/time.cc:5:\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)\n   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,\n                                           ^~~\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)\n   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,\n                                           ^~~\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided\nIn file included from /usr/include/c++/7/cassert:44:0,\n                 from /home/shubham/.cache/node-gyp/13.8.0/include/node/node_object_wrap.h:26,\n                 from ../../nan/nan.h:51,\n                 from ../src/time.cc:5:\n../../nan/nan_object_wrap.h: In destructor \xe2\x80\x98virtual Nan::ObjectWrap::~ObjectWrap()\xe2\x80\x99:\n../../nan/nan_object_wrap.h:24:25: error: \xe2\x80\x98class Nan::Persistent<v8::Object>\xe2\x80\x99 has no member named \xe2\x80\x98IsNearDeath\xe2\x80\x99\n     assert(persistent().IsNearDeath());\n                         ^\nIn file included from ../../nan/nan.h:2222:0,\n                 from ../src/time.cc:5:\n../../nan/nan_object_wrap.h: In member function \xe2\x80\x98void Nan::ObjectWrap::MakeWeak()\xe2\x80\x99:\n../../nan/nan_object_wrap.h:67:18: error: \xe2\x80\x98class Nan::Persistent<v8::Object>\xe2\x80\x99 has no member named \xe2\x80\x98MarkIndependent\xe2\x80\x99\n     persistent().MarkIndependent();\n                  ^~~~~~~~~~~~~~~\nIn file included from /usr/include/c++/7/cassert:44:0,\n                 from /home/shubham/.cache/node-gyp/13.8.0/include/node/node_object_wrap.h:26,\n                 from ../../nan/nan.h:51,\n                 from ../src/time.cc:5:\n../../nan/nan_object_wrap.h: In static member function \xe2\x80\x98static void Nan::ObjectWrap::WeakCallback(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)\xe2\x80\x99:\n../../nan/nan_object_wrap.h:124:26: error: \xe2\x80\x98class Nan::Persistent<v8::Object>\xe2\x80\x99 has no member named \xe2\x80\x98IsNearDeath\xe2\x80\x99\n     assert(wrap->handle_.IsNearDeath());\n                          ^\n../src/time.cc: At global scope:\n../src/time.cc:12:20: error: \xe2\x80\x98Handle\xe2\x80\x99 has not been declared\n   static void Init(Handle<Object> target) {\n                    ^~~~~~\n../src/time.cc:12:26: error: expected \xe2\x80\x98,\xe2\x80\x99 or \xe2\x80\x98...\xe2\x80\x99 before \xe2\x80\x98<\xe2\x80\x99 token\n   static void Init(Handle<Object> target) {\n                          ^\n../src/time.cc: In static member function \xe2\x80\x98static void Time::Init(int)\xe2\x80\x99:\n../src/time.cc:16:20: error: \xe2\x80\x98target\xe2\x80\x99 was not declared in this scope\n     Nan::SetMethod(target, "time", Time_);\n                    ^~~~~~\n../src/time.cc:16:20: note: suggested alternative: \xe2\x80\x98tzset\xe2\x80\x99\n     Nan::SetMethod(target, "time", Time_);\n                    ^~~~~~\n                    tzset\n../src/time.cc: In static member function \xe2\x80\x98static Nan::NAN_METHOD_RETURN_TYPE Time::Localtime(Nan::NAN_METHOD_ARGS_TYPE)\xe2\x80\x99:\n../src/time.cc:87:64: error: no matching function for call to \xe2\x80\x98v8::Value::IntegerValue()\xe2\x80\x99\n     time_t rawtime = static_cast<time_t>(info[0]->IntegerValue());\n                                                                ^\nIn file included from /home/shubham/.cache/node-gyp/13.8.0/include/node/node.h:63:0,\n                 from ../../nan/nan.h:49,\n                 from ../src/time.cc:5:\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:2774:40: note: candidate: v8::Maybe<long int> v8::Value::IntegerValue(v8::Local<v8::Context>) const\n   V8_WARN_UNUSED_RESULT Maybe<int64_t> IntegerValue(\n                                        ^~~~~~~~~~~~\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:2774:40: note:   candidate expects 1 argument, 0 provided\n../src/time.cc: In static member function \xe2\x80\x98static Nan::NAN_METHOD_RETURN_TYPE Time::Mktime(Nan::NAN_METHOD_ARGS_TYPE)\xe2\x80\x99:\n../src/time.cc:141:103: error: no matching function for call to \xe2\x80\x98v8::Value::Int32Value()\xe2\x80\x99\n     tmstr.tm_sec   = Nan::Get(arg, Nan::New("seconds").ToLocalChecked()).ToLocalChecked()->Int32Value();\n                                                                                                       ^\nIn file included from /home/shubham/.cache/node-gyp/13.8.0/include/node/node.h:63:0,\n                 from ../../nan/nan.h:49,\n                 from ../src/time.cc:5:\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:2778:40: note: candidate: v8::Maybe<int> v8::Value::Int32Value(v8::Local<v8::Context>) const\n   V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;\n                                        ^~~~~~~~~~\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:2778:40: note:   candidate expects 1 argument, 0 provided\n../src/time.cc:142:103: error: no matching function for call to \xe2\x80\x98v8::Value::Int32Value()\xe2\x80\x99\n     tmstr.tm_min   = Nan::Get(arg, Nan::New("minutes").ToLocalChecked()).ToLocalChecked()->Int32Value();\n                                                                                                       ^\nIn file included from /home/shubham/.cache/node-gyp/13.8.0/include/node/node.h:63:0,\n                 from ../../nan/nan.h:49,\n                 from ../src/time.cc:5:\n/home/shubham/.cache/node-gyp/13.8.0/include/node/v8.h:2778:40: note: 

Mhe*_*her 9

这对我有用

npm install -g npm-check-updates
npm-check-updates -u
npm install
Run Code Online (Sandbox Code Playgroud)


小智 5

您遇到的问题是time包已过时https://www.npmjs.com/package/time

根据您使用该包的原因,有一些不同的解决方案,您可以使用不同的库/包来处理日期和时间,但您可能需要重构一些代码。

尝试从package.json中删除此依赖项,"time": "^0.12.0"然后再次运行npm install以查看它是否正确运行。

然后更改依赖项以使用更新的分支,time例如 https://github.com/riyadshauk/node-time。您timepackage.json 的依赖应该如下所示

"dependencies": {
 "time": "github:riyadshauk/node-time"
}
Run Code Online (Sandbox Code Playgroud)

您的完整依赖项应该是这样的(假设自您提出问题以来您没有安装/删除任何内容),唯一的更改是 on time,其余部分是相同的。我用的是节点v13.7.0

 "dependencies": {
  "apn": "^2.1.5",
  "async": "^1.5.2",
  "bcrypt-nodejs": "^0.0.3",
  "body-parser": "^1.15.1",
  "compression": "^1.6.2",
  "consolidate": "^0.14.5",
  "cookie-parser": "^1.4.1",
  "cors": "^2.8.4",
  "dotenv": "^2.0.0",
  "express": "^4.13.4",
  "express-validator": "^2.20.4",
  "fcm-node": "^1.2.0",
  "geocoder": "^0.2.3",
  "jimp": "^0.2.28",
  "jsonwebtoken": "^5.7.0",
  "moment": "^2.12.0",
  "moment-timezone": "^0.5.14",
  "mongoose": "^4.4.8",
  "mongoose-unique-validator": "^1.0.6",
  "morgan": "^1.7.0",
  "multer": "^1.3.0",
  "mustache": "^2.3.0",
  "node-cron": "^1.2.1",
  "node-excel-export": "^1.4.4",
  "nodemailer": "^2.3.0",
  "nodemailer-mailgun-transport": "^1.3.5",
  "nodemailer-smtp-transport": "^2.7.4",
  "qr-image": "^3.2.0",
  "randomstring": "^1.1.5",
  "request": "^2.69.0",
  "soap": "^0.23.0",
  "socket.io": "^2.0.3",
  "strong-soap": "^1.5.0",
  "swagger-jsdoc": "^1.9.3",
  "swagger-ui-express": "^1.0.7",
  "time": "github:riyadshauk/node-time",
  "twilio": "^3.9.1",
  "underscore": "^1.8.3",
  "uuid": "^3.2.1",
  "ws.js": "^2.0.23"
 }
Run Code Online (Sandbox Code Playgroud)

  • 如果我不使用“时间”库怎么办?如何找出导致问题的软件包? (3认同)