前情回顾

之前为一个客户开发过一个基于Adobe Premiere的Html5扩展。原本是在Adobe Premiere Pro 2015下面进行调试开发的。一切进展的非常顺利,功能也都正常。但是2015版本内嵌的chrome浏览器内核有点老旧,很多页面样式在2015里面都不正常,所以这段时间从2015迁移到2017进行开发。哪知道迁移之后的第一步就报错了。插件中使用到了Nodejs来进行一些文件操作,初始化的第一步就报错:uncaught reference error: require is not define. 这就奇怪了,2015版中运行的好好的程序为啥到了2017就不行了呢?按照Adobe官方的文档,2015版支持了Nodejs的API,没道理2017不支持了啊。只可能支持度更完整才对啊。冥思苦想了半天,实在想不出是为啥。参考了下pond5和shutterstock的插件实现,他们都有用到Nodejs的模块,而且在2015及以上的版本中都能正常运行啊。难道都做了什么额外的我没有发现的操作?

按照这个思路,把Pond5的插件页面翻了个底朝天,出了一个build.js有点联系之外,其他的代码没有任何和nodejs相干的。这下更加纳闷了,为啥它们可以正常运行?按照官方文档以及网络上对Nodejs功能的讨论,要启用Nodejs需要在manifest.xml中配置两个标签:

<CEFCommandLine>
<Parameter>--enable-nodejs</Parameter>
<Parameter>--mixed-context</Parameter>
</CEFCommandLine>

毫无疑问,这个肯定是加了的。在开发之初我就配置好了这些东西的。没有道理去怀疑这个配置文件的正确性。无奈中又把Adobe官方发布的Sample工程下载来跑了下,Nodejs模块也都正常运行!这就奇了个葩了,肯定是工程配置哪里不对!

解决方案

于是重点来检查manifest.xml文件。在反复的核对与修改之后,我发现我的manifest.xml文件与其他的工程都有点不同,我的文件结构关键部分如下:

<Resources>
<MainPath>./index.html</MainPath>
<ScriptPath>./jsx/MokaBridge.jsx</ScriptPath>
</Resources>
<CEFCommandLine>
<Parameter>--allow-file-access</Parameter>
<Parameter>--allow-file-access-from-files</Parameter>
<Parameter>--enable-nodejs</Parameter>
<Parameter>--mixed-context</Parameter>
<Parameter>--disable-application-cache</Parameter>
</CEFCommandLine>

 而所有正常的工程,他们的配置如下:

<Resources>
<MainPath>./index.html</MainPath>
<ScriptPath>./jsx/MokaBridge.jsx</ScriptPath>
<CEFCommandLine>
<Parameter>--allow-file-access</Parameter>
<Parameter>--allow-file-access-from-files</Parameter>
<Parameter>--enable-nodejs</Parameter>
<Parameter>--mixed-context</Parameter>
<Parameter>--disable-application-cache</Parameter>
</CEFCommandLine>
</Resources>

  就这么点区别。与是马上修改一验证,还真的是这个问题!!! 可是为啥在2015版本中能良好的运行啊?坑了个爹的,害我白白花了半天时间。

参考链接

1. https://forums.adobe.com/thread/2316825

2. https://forums.adobe.com/thread/2384485

3. https://github.com/Adobe-CEP/CEP-Resources/blob/master/CEP_8.x/Documentation/CEP%208.0%20HTML%20Extension%20Cookbook.md

4. http://www.davidebarranca.com/2017/10/html-panel-tips-25-cc-2018-survival-guide/

5.https://github.com/Adobe-CEP/CEP-Resources/issues/139

在Adobe Html5 Extension的使用Nodejs的问题的更多相关文章

  1. Adobe Html5 Extension开发初体验

    一.背景介绍       Adobe公司出品的多媒体处理软件产品线较多,涵盖了音视频编辑.图像处理.平面设计.影视后期等领域.为了扩展软件的功能,Adobe公司为开发者提供了两种方式来增加软件的功能: ...

  2. 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(一)

    项目组用air来开发手游, 但有些在原生应用里很容易实现的功能没有办法在air中直接调用,比如说震动,服务等等.但Adobe 提供了一种方法让air间接调用本地代码(java,object-c...) ...

  3. 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(四)

    这一节,是要把AS库和Android的jar包及相关配置文件打成一个ane包. 首先先建一个build目录,里面文件目录结构如下: 然后用打开压缩包的方式打开ServiceLib.swc, 把其中的l ...

  4. 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(三)

    jar包完成后,剩下就是要构建ANE包来供实际程序调用. 首先要建两个Flex库项目, default那个是官方建议加上的,仅用于不在真实环境下编译调试的时候有个默认接口不至于调用不成功报错,项目结构 ...

  5. 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(二)

    着手改造之前,有兴趣可以阅读下官方文档:http://help.adobe.com/zh_CN/air/extensions/index.html 新建工程 NavService 并创建包 nav.w ...

  6. 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(五)

    这一节,用个简单的例子来调用下之前生成的service.ane 首先建一个flex手机项目 然后在构建路径中把ane引进来 可以看到此ane支持Android平台. serviceMobile.mxm ...

  7. web前端之html5开发中常用的开发工具

    正所谓“工欲善其事,必先利其器”,对Web开发人员来说,好工具的使用总会给人带来事半功倍的效果.正准备学习HTML5或者已经进行了一段时间的HTML5开发的童鞋,都有必要了解下,HTML5都有哪些开发 ...

  8. adobe air ane 中有的java class 打包 apk 后却没有了报NoClassDefFoundError ,ClassNotFoundException

    apache flex sdk 手机项目 09-18 10:34:55.030: E/AndroidRuntime(19513): FATAL EXCEPTION: main 09-18 10:34: ...

  9. Emmet for Dreamweaver 整理分享

    我是一名技术不是很到位的前端,每次做项目总要写大量的HTML和CSS,耳边经常听到的是快.快点.再快点!我真想说快你妹!但是,我不得不承认的是:我只有两只手... 后来,在群里看到有人分享了一个连接大 ...

随机推荐

  1. SpringBoot捕获全局异常

    1.创建GloableExceptionAop类捕获全局异常 package com.cppdy.exception; import org.springframework.web.bind.anno ...

  2. hdu2871 区间合并(类似poj3667)+vector应用

    用vector进行插入和删除操作! 总是有些地方处理不好,对拍了才知道错在哪里,, /* 给定一些操作 reset 清空 new a ,申请最左边的连续a个空间 free a,清空a所在的块 get ...

  3. IntersectionObserver API 使用教程

    转载:原文地址:http://www.ruanyifeng.com/blog/2016/11/intersectionobserver_api.html 网页开发时,常常需要了解某个元素是否进入了&q ...

  4. 从认识面向对象到构造函数的标准写法(构造函数的继承、多态、ECMA6中新代替语法class) - 下

    笔记一个包含:认识面向对象.构造函数的封装.继承.多态.ECMA6中新代替语法class 下:包括构造函数的继承.多态.ECMA6中新代替语法class 构造函数的继承 从父一级延续下来的属性和功能( ...

  5. 对象存储服务(Object Storage Service,简称 OSS)

    阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量.安全.低成本.高可靠的云存储服务.它具有与平台无关的RESTful API接口,能够提供99.99 ...

  6. 20165323 实验一 Java开发环境的熟悉

    一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:杨金川 学号:20165323 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验时间:13:45 - 15:25 实验序号:一 实 ...

  7. python练习册0004题

    在任意一个英文文档中,统计单词出现的次数, 分析: 本题不是很难,单词通常以空格隔开,但是有些单词后面跟一些特殊符号,只需把这些特殊符号替换掉就可以了, 代码一 import re file_name ...

  8. 使用android-ndk官方ndkbuild例子

    Why this blog 现在(2018年9月27日),Android Studio中新建ndk项目都使用cmake而不是Android.mk+Application.mk的方式.但老项目需要维护, ...

  9. org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /eclipse20171118

    1:如果有一天,你有幸看到了这个错误,也许你像我一样low,因为此时,你已经准备开发Zookeeper程序了,却还没有把Zookeeper的服务启动起来. org.apache.zookeeper.K ...

  10. Windows Azure 搭建网络代理 Proxy

    额 题目起的有点大 其实就是在 Linux 上使用代理 不过是用的 Azure 上的 Liunx 虚拟机而已 如何在 Azure 上搭建 VPN 见上篇:http://www.cnblogs.com/ ...