NativeScript Bundle Snapshot - ReferenceError:com未定义

时间:2018-03-14 14:56:18

标签: android webpack nativescript snapshot

我正在尝试使用这样的快照标记捆绑NativeScript应用程序:

tns build android --bundle --env.snapshot 

出现以下错误:

ERROR in NativeScriptSnapshot. Snapshot generation failed!
Target architecture: x86
# Script run failed in <embedded>@736:2461
ReferenceError: com is not defined


#
# Fatal error in ../src/snapshot/mksnapshot.cc, line 175
# Check failed: blob.data.
#

任何人都知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

问题是根文件夹中的app.scss已重命名为其他内容。确保它将通过/^\.\/app\.(css|scss|less|sass)$/文件中的正则表达式(默认值:vendor.ts)。

答案 1 :(得分:0)

请参阅How it works部分

  

快照包中包含的模块仍然可以包含本机模块   API调用,因为它们不会立即评估模块   加载。例如,以下模块:

     

需要( “应用”);

     

var time = new android.text.format.Time();无法快照   因为它触及android.text.format。时间API不是   可用即可。但是,在这一个:

     

需要( “应用”);

     

function getTime(){       return new android.text.format.Time();在模块执行时不评估本机API访问。鉴于getTime()被调用   稍后在Android提供的功能齐全的V8上下文中   运行时,我们可以安全地将模块包含在快照包中。

     

如果快照步骤由于对未定义的引用而失败   API,尝试以下一些解决方案:

     

如果您可以更改包含禁用API调用的模块,请换行   应用程序运行时调用的函数中的有罪代码   在设备上保持模块在捆绑中,但要确保所有需要   应用程序执行后,将执行不可快照模块的调用   在设备上运行:require(“application”); var m =   要求( “非snapshotable模块”);

     

function doSomething(){       return m.someMethod();如果上面的代码在何时加载不可快照模块,则上面的代码有更高的成功快照的机会   它确实需要它:

     

需要( “应用”);

     

function doSomething(){       return require(“non-snapshotable-module”)。someMethod();如果从未在快照上下文中调用doSomething()函数,则   不会评估不可快照的模块,并且将生成blob   成功。

     

从中排除包含禁止API调用的模块   快照包。

因此,请确保您没有在快照时间引用com