【问题标题】:Importing JavaScript Library into NativeScript将 JavaScript 库导入 NativeScript
【发布时间】:2016-04-02 15:34:16
【问题描述】:

我正在学习 NativeScript。我有一个基本的应用程序正在运行。我现在正在尝试导入我过去使用过的 JavaScript 库。我正在使用以下方法导入库:

npm install git://github.com/my-company/my-project.git --save

我已确认正在安装该软件包。然后在我的视图模型中添加以下内容:

var MyLibrary = require('MyLibrary');

仅这一行就会导致应用崩溃。基本上,NativeScript 似乎找不到它(或加载它)。我看了看,可以在“node_modules”目录下看到“MyLibrary”目录。目录结构如下:

.
node_modules
  MyLibrary
    dist
      MyLibrary.min.js
    src
      MyLibrary.js
    package.json

MyLibrary.js 文件如下所示:

class MyLibrary {
    process(vals) {        
        let result = 0;
        if (vals) {
            vals.forEach(function(val) {
                result = result + val;
            });
        }
        return result;
    }
}
module.exports = MyLibrary;

“MyLibrary.min.js”文件是通过 Babel 运行并将其转换为 ES5 的结果。我究竟做错了什么?我只是想将以下代码放入我的视图模型中:

var MyLibrary = require('MyLibrary');
var library = new MyLibrary();
var result = library.process([1, 2, 3, 4]);

【问题讨论】:

  • 我不知道这是否有帮助,但require('MyLibrary/dist/MyLibrary.min.js') 有效吗?
  • @jasssonpet 确实有效。但我想成为酷孩子之一:)
  • 也许您应该检查package.jsonmain 字段。它应该指向您希望require('MyLibrary') 解析的模块。

标签: javascript node.js nativescript


【解决方案1】:
  1. 在您的 package.json 中,添加如下属性:
{
  "main": "./dist/MyLibrary.min.js"
}
  1. 在您的代码中,像这样使用您的模块:
var MyLibraryModule = require('MyLibrary');
var library = new MyLibraryModule.MyLibrary();
var result = library.process([1, 2, 3, 4]);

【讨论】:

  • 我正在尝试为 github.com/rosiejs/rosie 包执行此操作。似乎在 package.json 那里,它已经有第 1 步。但是当我在第 2 步中需要像你的方法那样需要 rosie 时仍然会产生此错误消息npm test ios:“找不到模块 'rosie'”
  • 对于那些使用通过npm 安装的外部软件包的人来说,请确保您不执行-D (save-dev),并执行--save。我能够让它与 js 库 rosie 一起使用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-07
  • 2016-08-05
  • 1970-01-01
  • 2013-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多