如何使用第三方npm软件包与ember cli应用程序 [英] How to use third party npm packages with ember cli app

查看:136
本文介绍了如何使用第三方npm软件包与ember cli应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

编辑: 这实际上是关于任何不是与ember一起玩的npm软件包。在我的情况下,我试图让crypto-js工作,但是对于没有专门为ember cli设计的任何npm软件包似乎总是一样的麻烦。



我想在我的ember应用程序中使用cryptoJS,我正在使用ember cli进行重构,但是导入我已经在使用的所有第三方软件包和库中遇到了很多麻烦,例如cryptoJS。



CryptoJS至少有一个npm的包,我甚至不想考虑如果我的一些包含的库没有包会发生什么...



我只是在ember-cli的文档中没有提到,或者真的没有描述如何导入其他npm软件包,以及如何正确地插入非软件包库保持版本控制和依赖关系控制?



如果我遵循crypto-js包手册的描述:

  var CryptoJS = require(crypto-js); 
console.log(CryptoJS.HmacSHA1(Message,Key));

我的 ember build

  utils / customauthorizer.js:第1行,第16栏,'require'未定义。感谢您对此的任何帮助,对于ember cli项目感到非常兴奋,但是导入我的现有的ember应用程序迄今已经相当痛苦了... 



编辑:



不幸的是输入不行。

 从'crypto-js'导入CryptoJS; 

在构建期间抛出

  daily @ dev1:〜/ VMD $ ember build 
版本:0.1.2
构建失败。
文件:vmd / utils / customauthorizer.js
ENOENT,没有这样的文件或目录'/home/daily/VMD/tmp/tree_merger-tmp_dest_dir-F7mfDQyP.tmp/crypto-js.js'
错误:ENOENT,没有这样的文件或目录'/home/daily/VMD/tmp/tree_merger-tmp_dest_dir-F7mfDQyP.tmp/crypto-js.js'
在错误(本机)
在对象.fs.statSync(fs.js:721:18)
在addModule(/home/daily/VMD/node_modules/ember-cli/node_modules/broccoli-es6-concatenator/index.js:84:46)
在addModule(/home/daily/VMD/node_modules/ember-cli/node_modules/broccoli-es6-concatenator/index.js:133:9)
在addModule(/ home / daily / VMD / node_modules $ / $ / $ / $ / $ :59:7
在$$$内部$$ tryCatch(/home/daily/VMD/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:470:16)
at $ $$ internal $$ invokeCallback(/ home / daily / VMD / node_modules / ember-cli $ / $ / $ / :453:11)
at $$ rsvp $ asap $$ flush(/home/daily/VMD/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:1531:9)


解决方案

最简单和推荐的答案是使用 ember-browserify 。 (如将来将会删除对bower软件包的支持。)



这是一个在Ember CLI应用程序中使用npm软件包 dexie 的示例。



安装browserify: npm install ember-browserify --save-dev



安装dexie (或任何您需要的模块): npm install dexie --save-dev



导入模块: 从'npm:dexie'导入Dexie;


EDIT: this is actually about any npm package which is not designed to play along with ember. In my case, I tried to make crypto-js work, but it seems to be always the same trouble with any npm package not specially designed for ember cli.

I want to use cryptoJS in my ember app, which I'm currently refactoring with ember cli, but I'm having a lot of trouble importing all the third party packages and libraries I'm already using, like for example cryptoJS.

CryptoJS at least has a package for npm, I don't even want to think about what happens if some of my included libraries don't have a package...

Am I just missing the point in the documentation of ember-cli or is it really not described how to import other npm packages and also how to inlcude non-package libraries properly to keep them under version control and dependency control?

If I follow the description of the crypto-js package manual:

var CryptoJS = require("crypto-js");
console.log(CryptoJS.HmacSHA1("Message", "Key"));

I get and error in my ember build

utils/customauthorizer.js: line 1, col 16, 'require' is not defined.

Thanks for any help on this, I'm very excited about the ember cli project, but importing my existing ember app has been quite painful so far...

EDIT:

Just importing unfortunately does not work.

import CryptoJS from 'crypto-js';

throws during the build

daily@dev1:~/VMD$ ember build
version: 0.1.2
Build failed.
File: vmd/utils/customauthorizer.js
ENOENT, no such file or directory '/home/daily/VMD/tmp/tree_merger-tmp_dest_dir-F7mfDQyP.tmp/crypto-js.js'
Error: ENOENT, no such file or directory '/home/daily/VMD/tmp/tree_merger-tmp_dest_dir-F7mfDQyP.tmp/crypto-js.js'
    at Error (native)
    at Object.fs.statSync (fs.js:721:18)
    at addModule (/home/daily/VMD/node_modules/ember-cli/node_modules/broccoli-es6-concatenator/index.js:84:46)
    at addModule (/home/daily/VMD/node_modules/ember-cli/node_modules/broccoli-es6-concatenator/index.js:133:9)
    at addModule (/home/daily/VMD/node_modules/ember-cli/node_modules/broccoli-es6-concatenator/index.js:133:9)
    at /home/daily/VMD/node_modules/ember-cli/node_modules/broccoli-es6-concatenator/index.js:59:7
    at $$$internal$$tryCatch (/home/daily/VMD/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:470:16)
    at $$$internal$$invokeCallback (/home/daily/VMD/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:482:17)
    at $$$internal$$publish (/home/daily/VMD/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:453:11)
    at $$rsvp$asap$$flush (/home/daily/VMD/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:1531:9)

解决方案

The easiest and recommended answer is to use ember-browserify. (as support for bower packages will be removed in the future.)

This is an example for using the npm package dexie within an Ember CLI app.

Install browserify: npm install ember-browserify --save-dev

Install dexie (or whatever module you need): npm install dexie --save-dev

Import the module like this: import Dexie from 'npm:dexie';

这篇关于如何使用第三方npm软件包与ember cli应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆