这是我在NativeScript ( ns )上的第一个项目,所以我对它有点陌生,不知道在ns世界中一切是如何工作的。
对于我的项目,我使用最新的ns版本设置了ns+vue+ts项目,即8.1.5。
在我开始添加一些库之前,一切都很好。第一个警报是安装和安装nativescript-google-maps-sdk,每个教程和官方文档都告诉您需要以这样的方式打开SDK (示例可能有所不同,但所有示例都需要platform):
import * as platform from "platform";
if (platform.isIOS) {
GMSServices.provideAPIKey("PUT_API_KEY_HERE");
}
Vue.registerElement('MapView', () => require('nativescript-google-maps-sdk').MapView);但是我安装的NativeScript没有platfrom,相反,我让它与
import {isIOS } from "@nativescript/core";
if (isIOS) {
GMSServices.provideAPIKey("PUT_API_KEY_HERE");
}
Vue.registerElement('MapView', () => require('nativescript-google-maps-sdk').MapView);我还没有解决的第二个问题是nativescript/geolocation。安装该软件包后,无法运行我的ios仿真器,它出错了:
ERROR in ./node_modules/nativescript-geolocation/geolocation.ios.js 8:15-34
Module not found: Error: Can't resolve 'platform' in '/Users/myuser/projects/app/node_modules/nativescript-geolocation'我是不是做错了什么,或者8.1.5版本的ns还不受支持?
发布于 2021-12-10 15:43:08
我刚刚开始迁移一个很大的{N} 6.8应用程序到8.1,所以我想我会检查你的问题,因为它也适用于我。我也看到了同样的错误,但是如果您需要的是确定操作系统,则可以使用Application类。见https://github.com/NativeScript/nativescript-cli/issues/5423。
编辑12/15/2021:
当我涉猎我自己的迁移时,我发现您必须查看源代码才能看到特定类的导出。平台仍然存在,但没有直接出口。相反,您必须导入各种元素。因此,这样做是可行的:
import { isAndroid, isIOS } from '@nativescript/core';这确实是不幸的,因为它需要大量的搜索和测试,并进行详细的编码更改。到目前为止,我还没有找到任何可行的移民指南。这个84分钟YouTube视频值得一看,但并不能让你了解这些细节。
如果您刚刚开始,您必须了解新的语法,并且知道大多数现有的示例和文档都需要迁移。
编辑12/15/2021
当我继续的时候,我意识到有些名字根本没有定义。所以,平台确实还在那里,你只需要这样做:
const platform = require("@nativescript/core/platform");同样,如果您需要文件系统或KnownColors:
const fs = require("@nativescript/core/file-system");
const KnownColors = require("@nativescript/core/color/known-colors");如果您试图从@nativescript/core导入一个无法识别的名称,那么在构建输出中确实会得到一个已知名称的列表。如果您没有看到您在那里寻找的内容,您可能需要求助于一个完全限定的需求(对于JavaScript)或导入(TypeScript)。
https://stackoverflow.com/questions/70270845
复制相似问题