首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >应用程序找不到.js文件

应用程序找不到.js文件
EN

Stack Overflow用户
提问于 2020-02-11 20:20:47
回答 1查看 1.2K关注 0票数 0

我有一个Play应用程序。应用程序的UIAngular中。我已经创建了一个顶层Angular目录的文件夹ui

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
build.sbt
`ui-dev-build` := {
    implicit val UIroot = baseDirectory.value / "ui"
      if (runDevBuild != Success) throw new Exception("Oops! UI Build crashed.")
}

def runDevBuild(implicit dir: File): Int = ifUiInstalled(runScript("npm run build"))

package.json
"build": "ng build --output-path ../public/ui",

在构建Angular应用程序时,我将输出传输到Play框架的public文件夹。从那里,Playpublic文件夹的联系人传输到target文件夹进行部署。在index.html (主页html文件)中,我通过包含在Angular build中创建的脚本来访问angular

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="@routes.Assets.versioned("ui/runtime.js")" type="text/javascript"></script>
    <script src="@routes.Assets.versioned("ui/vendor.js")" type="text/javascript"></script>
    <script src="@routes.Assets.versioned("ui/styles.js")" type="text/javascript"></script>
    <script src="@routes.Assets.versioned("ui/main.js")" type="text/javascript"></script>
<script src="@routes.Assets.versioned("ui/scripts.js")" type="text/javascript"></script>

这可以很好地工作。

我想在我的应用程序https://github.com/fxmontigny/ng2-ace-editor中使用ng-ace2-editor。我已经将其添加到package.json - "ng2-ace-editor": "0.3.9"中,并且我可以看到ng2-ace-editor目录存在于node_modules中。

当我运行应用程序时,我得到了错误

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET http://localhost:9000/mode-html.js net::ERR_ABORTED 404 (Not Found)
exports.loadScript  @   index.js:3802
exports.loadModule  @   index.js:4174
setMode @   index.js:10152
push../node_modules/ng2-ace-editor/src/component.js.AceEditorComponent.setMode

我不明白如何让我的应用程序找到mode-html.js。该文件位于位置"./node_modules/ace-builds/src-min/mode-html.js。我已经在package.json"script":[]中添加了此路径,但仍然收到错误。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"scripts":[
              "./node_modules/ace-builds/src-min/ace.js",
              "./node_modules/ace-builds/src-min/theme-eclipse.js",
              "./node_modules/ace-builds/src-min/mode-html.js"
]

有趣的是,如果我在主页文件中包含ace.js,就可以正常工作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="@routes.Assets.versioned("ui/runtime.js")" type="text/javascript"></script>
    <script src="@routes.Assets.versioned("ui/vendor.js")" type="text/javascript"></script>
    <script src="@routes.Assets.versioned("ui/styles.js")" type="text/javascript"></script>
    <script src="@routes.Assets.versioned("ui/main.js")" type="text/javascript"></script>
<script src="@routes.Assets.versioned("ui/scripts.js")" type="text/javascript"></script>
    <script src="@routes.Assets.versioned("javascripts/common/vendor/ace/src-min/ace.js")" type="text/javascript"></script> <!-- this makes things work-->

所以我知道这个问题是我的mode-html.js文件没有得到服务,很可能是路径解析问题,但我不知道是什么问题。

进一步分析表明,ace.js中的以下代码导致了该错误。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
exports.loadModule = function(moduleName, onLoad) {
    var module, moduleType;
    if (Array.isArray(moduleName)) {
        moduleType = moduleName[0];
        moduleName = moduleName[1];
    }

    try {
        module = require(moduleName);
    } catch (e) {}
    if (module && !exports.$loading[moduleName])
        return onLoad && onLoad(module);

    if (!exports.$loading[moduleName])
        exports.$loading[moduleName] = [];

    exports.$loading[moduleName].push(onLoad);

    if (exports.$loading[moduleName].length > 1)
        return;

    var afterLoad = function() {
        require([moduleName], function(module) {
            exports._emit("load.module", {name: moduleName, module: module});
            var listeners = exports.$loading[moduleName];
            exports.$loading[moduleName] = null;
            listeners.forEach(function(onLoad) {
                onLoad && onLoad(module);
            });
        });
    };

    if (!exports.get("packaged"))
        return afterLoad();

    net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);
    reportErrorIfPathIsNotConfigured();
};

var reportErrorIfPathIsNotConfigured = function() {
    if (
        !options.basePath && !options.workerPath 
        && !options.modePath && !options.themePath
        && !Object.keys(options.$moduleUrls).length
    ) {
        console.error(
            "Unable to infer path to ace from script src,",
            "use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes",
            "or with webpack use ace/webpack-resolver"
        );
        reportErrorIfPathIsNotConfigured = function() {};
    }
};

为什么显式调用<script src="@routes.Assets.versioned("javascripts/common/vendor/ace/src-min/ace.js")" type="text/javascript"></script>可以让代码正常工作。根据Angular打包方法https://upgradetoangular.com/angular-news/the-angular-cli-is-a-great-way-to-build-your-angular-app-but-what-it-does-can-be-a-mystery-what-are-those-files-it-generates/,此脚本是否已在ui/scripts.js中可用

EN

回答 1

Stack Overflow用户

发布于 2020-02-18 07:50:57

我终于能够让我的代码正常工作了。我的设置是不同的。我构建了我的Angular应用程序,它是由我的Play服务器提供的。angular构建存储在Play的/public/ui文件夹中。请求的格式应为/assets/ui/..它被映射到/public/ui/...由于播放路由文件中的规则

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET     /assets/*file               controllers.Assets.versioned(path="/public", file: Asset)

当我运行代码时,我得到了错误。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Uncaught DOMException: Failed to execute 'importScripts' on 'WorkerGlobalScope': The script at 'http://localhost:9000/worker-javascript.js' failed to load.
    at blob:http://localhost:9000/3df21e42-fecb-4026-8bd6-f2b0d1d0540a:1:1

早些时候,我也收到了错误Unable to infer path to ace from script src, use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes or with webpack use ace/webpack-resolver

似乎ng-ace-editor根据编辑器的thememode导入了.js脚本(主题、模式、工作者)。thememode js文件可以包含在scripts.js中,但一些worker-.js文件不能包含(我不知道为什么,可能是因为worker文件是使用importScript动态加载的。

Angular.json中的脚本部分是(这将全部打包到Angular的最终包中的scripts.js中)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"scripts": [
              "./node_modules/ace-builds/src/ace.js",
              "./node_modules/ace-builds/src/theme-eclipse.js",
              "./node_modules/ace-builds/src/theme-monokai.js",
              "./node_modules/ace-builds/src/mode-html.js"
            ]]

为了包含worker-.js文件,我添加了这个规则,因为它似乎不能从node_modules加载angular-cli。因此,我必须将文件从node modules复制到我的ui build - How to include assets from node_modules in angular cli project的根目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"assets": [
              "src/assets",
              "src/favicon.ico",
              {
                "glob": "**/*",
                "input": "./node_modules/ace-builds/src/",
                "output": "/"
              }
            ],

当我执行代码时,我发现了http://localhost:9000/worker-javascript.js can't be loaded的错误。我意识到我的文件加载在/assets/ui/路径中,而不是服务器的根目录中。因此,我在组件的.ts文件中将basepath设置为/assets/ui

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import * as ace from 'ace-builds/src-noconflict/ace';
    ace.config.set('basePath', '/assets/ui/');
    ace.config.set('modePath', '');
    ace.config.set('themePath', '');

总之,basePath似乎是用于动态加载脚本的工具(例如工作者脚本) modePaththemePath/,因为模式和主题脚本捆绑在scripts.js中,并且在根级别可用。由于angular_cli不能从node_modules复制资产,因此需要将worker-.js文件复制到node_modules外部

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60176763

复制
相关文章
python pandas分组统计
利用panda便捷的对日志分组统计: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/11/14 下午6:27 # @Author : wz # @Email : 277215243@qq.com # @File : testpanda.py # @web : https://www.bthlt.com import pandas ''' 2017-10-30 20:21:06.626735|27024|5
葫芦
2019/04/17
1.2K0
如何理解和使用Python中的列表
Python有6个序列的内置类型,但最常见的是列表和元组。今天我们就来讲讲列表。
小土豆Yuki
2020/06/15
7K0
python 连续值分组统计
python 连续值分组统计
Java架构师必看
2021/08/10
1.4K0
python 连续值分组统计
python中列表的使用
情景:列表应该是数据处理时经常使用到一种数据类型,可以有序、组合的操作值存储,是很实用的函数。。。这是最后一篇整理的笔记,发现排版很浪费时间,也得不到交流,还是用类似onenote写笔记的方式快。
py3study
2020/01/14
5.3K0
Java8使用Stream流实现List列表的查询、统计、排序、分组
Java8提供了Stream(流)处理集合的关键抽象概念,它可以对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。Stream API 借助于同样新出现的Lambda表达式,极大的提高编程效率和程序可读性。
全栈程序员站长
2022/11/08
10.8K0
Java8使用Stream流实现List列表的查询、统计、排序、分组
解决嵌套布局中列表条目显示不全问题
自定义View重写onMeasure方法 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { //此处是代码的关键 //MeasureSpec.AT_MOST的意思就是wrap_content //Integer.MAX_VALUE >> 2 是使用最大值的意思,也就表示的无边界模式 //Integer.MAX_VALUE >
longzeqiu
2019/08/15
1.7K0
python中如何import不同层级的模块 python中如何import不同层级的模块
main.py为主文件,model.py是我们要引入的文件,则直接import model或from model import *即可。
尾尾部落
2018/09/04
4.8K0
Python 列表元素分组,比如 [1,
# 生成一个1到20的列表 a=[x for x in range(1,21)] # 把a列表切片,并赋值给b列表,x为0到20且步长为3的列表,在这里具体为[0,3,6,9,12,15,18] # 把x带入,b列表为[a[0:0+3],a[3:3+3]……[a[18:18+3] b=[a[x:x+3] for x in range(0,20,3)] print(a) print(b) 输出为 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1
py3study
2020/01/19
1K0
使用Python按另一个列表对子列表进行分组
在 Python 中,我们可以使用各种方法按另一个列表对子列表进行分组,例如使用字典和使用 itertools.groupby() 函数,使用嵌套列表推导。在分析大型数据集和数据分类时,按另一个列表对子列表进行分组非常有用。它还用于文本分析和自然语言处理。在本文中,我们将探讨在 Python 中按另一个列表对子列表进行分组的不同方法,并了解它们的实现。
很酷的站长
2023/08/11
4530
使用Python按另一个列表对子列表进行分组
14.不同条目的listview
分类界面 整个项目的逻辑就是这样的 CategoryInfo public class CategoryInfo { private String title; private String u
六月的雨
2018/05/14
6210
7.5.1 创建条目列表示例
7.5.1 创建条目列表示例 #include <QApplication> #include <QTabWidget> #include <QLineEdit> #include <QSpinBox> #include <QFormLayout> #include <QListWidget> #include <QLabel> int main(int argc, char *argv[]) { QApplication a(argc, argv); /*创建QListWidget*/ QLis
DS小龙哥
2022/01/12
6590
7.5.1 创建条目列表示例
列表元素分组
有这样一种场景,有三个列表a、b、c。我们想要把每一个列表中的第一个元素取出来分为一组,第二元素取出来分为一组、第三个元素取出来分为一组,以此类推。该怎么做呢?你可以自己想一想,再来看下面的实现过程。
TalkPython
2019/05/24
1.1K0
Python3中列表的使用
列表操作常用操作包含以下方法: 1、list.append(obj):在列表末尾添加新的对象 2、list.count(obj):统计某个元素在列表中出现的次数 3、list.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) 4、list.index(obj):从列表中找出某个值第一个匹配项的索引位置 5、list.insert(index, obj):将对象插入列表 6、list.pop(obj=list[-1]):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 7、list.remove(obj):移除列表中某个值的第一个匹配项 8、list.reverse():反向列表中元素 9、list.sort([func]):对原列表进行排序
py3study
2020/01/03
2.7K0
Python中的groupby分组
这个是groupby的最常见操作,根据某一列的内容分为不同的维度进行拆解,将同一维度的再进行聚合
全栈程序员站长
2022/09/01
2K0
Python中的groupby分组
【Python】列表 List ① ( 数据容器简介 | 列表 List 定义语法 | 列表中存储类型相同的元素 | 列表中存储类型不同的元素 | 列表嵌套 )
Python 中的 数据容器 数据类型 可以 存放多个数据 , 每个数据都称为 元素 , 容器 的 元素 类型可以是任意类型 ;
韩曙亮
2023/10/11
2820
【Python】列表 List ① ( 数据容器简介 | 列表 List 定义语法 | 列表中存储类型相同的元素 | 列表中存储类型不同的元素 | 列表嵌套 )
Mysql——分组统计
 💟💟前言 🥇作者简介:友友们大家好,我是你们的小王同学😗😗 🥈个人主页:小王同学🚗 🥉 系列专栏:牛客刷题专栏📖 📑 推荐一款非常火的面试、刷题神器👉牛客刷题 今天给大家带来的系列是:Mysql——分组统计 mysql 刷题 系列 牛客网 牛客网里面有非常多得面试真题 包含 java sql c++等多种语言实现  select语句🎪 使用group   by子句对列进行分组【先创建测试表】 select column1 column2 column3 .....from  ta
王同学要努力
2022/12/21
5.2K0
Mysql——分组统计
Python中如何进行数据分组
数据分组 根据数据分析对象的特征,按照一定的数值指标,把数据分析对象划分为不同的区间进行研究,以揭示其内在联系和规律性。 cut 函数: cut(series,bins,right=True,labels=NULL) ① series  需要分组的数据 ② bins    分组的划分数组 ③ right   分组的时候,右边是否闭合,默认为闭合True ④ labels  分组的自定义标签,可以不自定义 import pandas data = pandas.read_csv( 'D:\\PDA\
Erin
2018/01/09
3.2K0
python 中如何查找列表长度
In this article, we will be unveiling techniques to find the length of a Python list. Finding the length actually means fetching the count of data elements in an iterable.
用户8418197
2022/01/09
2.7K0
awk分组求和分组统计次数
如果第一列相同,则根据第一列来分组,分别打印第二列和第三列的和 如果第一列相同,则根据第一列来分组,分别打印第二列和第三列的和 分组求和 image.png 以第一列 为变量名  第一列为变量,将相同第一列的第二列数据进行累加打印出和. image.png image.png 以第一列和第二列为变量名, 将相同第一列、第二列的第三列数据进行累加打印出和 image.png image.png
用户8639654
2021/08/10
1.9K0
点击加载更多

相似问题

统计字典中的不同条目

12

统计python列表字典中最流行的条目

39

如何在python的字典列表中合并属于同一key的条目?

20

如何统计分组列表中的金额总和?

122

如何统计csv文件python中的条目和频率?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文