【问题标题】:Server is not looking for node_modules folder服务器没有在寻找 node_modules 文件夹
【发布时间】:2016-05-11 00:05:51
【问题描述】:

我正在尝试将我的应用程序部署到已将应用程序添加到默认网站的 Web 服务器。我使用 System.js 设置 baseURL 并启用 defaultJSExtensions 为真:

<script>
        System.config({
            baseURL: '/foo',
            defaultJSExtensions: true        
    });

    System.import('Scripts/typescript/main.js').then(null, console.error.bind(console));
    </script>

当它试图搜索我的 js 文件时出现问题,例如“/foo/node_modules/angular2/core.js”。它不是在搜索 node_modules 文件夹,它只是在寻找“/foo/angular2/core.js”。

在我的本地环境中,这一切都很好,它会自动查找“node_modules”文件夹,但是当我将它发布到服务器时,它不会。

我看到了一些将路径选项添加到我的 system.config 的解决方案,但我很好奇为什么我不需要在本地 Web 服务器中执行此操作,但我需要在测试服务器中执行此操作?是因为我的本地环境中没有“foo”站点名称吗?

我需要在服务器上安装 nodejs 吗?

感谢您的帮助。

【问题讨论】:

  • 您是否在主 HTMl 文件中添加了任何基本路径?像 一样,您是否使用 Gulp\Grunt 之类的构建工具来发布文件?
  • 我现在只是使用 Visual Studio 2015 发布。除了上面代码中显示的内容之外,我没有添加任何基本路径。

标签: node.js typescript angular systemjs


【解决方案1】:

你必须在系统配置中引入地图

    System.config({
        baseURL: '/foo',
        defaultJSExtensions: true,
        map: {
           "<angular import>": "<adjust URL based upon your structure>node_modules/angular2/core.js"
        }      
      });

【讨论】:

  • 我不完全清楚它是如何工作的。我使用了 baseurl '/foo' .. 是什么意思。你能给我一个使用这个的例子吗?这仍然没有回答我为什么它在本地运行良好但在服务器上运行良好。为什么需要在服务器上添加地图?
  • 你必须提供你的内容将被渲染的baseurl,所有的路径都将与之相关。因此,如果您添加 baseUrl 它将模仿您的服务器配置,否则您必须使用映射配置映射角度源文件路径,这是否回答了您的问题?在哪里可以使用 baseUrl 解决?
  • 添加 baseURL 有助于 System.import 片段。我只是不清楚为什么在我的本地环境中我不需要这些映射,但在我需要的服务器上。一般来说,我不太熟悉将网站部署到服务器。
  • 当您从 VS studio 发布时,它会转储到一个文件夹,并且文件是相对于该文件夹提供的,因此您获得 localhost/..path 并且在部署时需要 serverIdentifer//..路径,因此添加 baseUrl 让服务器知道在哪里查找所有内容文件。
猜你喜欢
  • 2012-12-17
  • 2020-05-03
  • 2021-06-02
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
相关资源
最近更新 更多