2016-04-08 93 views
3

我正在使用webpack管理我的反应应用程序。现在,我想从这个网址导入依赖性:webpack如何从外部URL导入

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=gNO2wKVBNupZfafi0bl0sW3dIKqAHn4l"> 

传统我只是把上面的代码在我的index.html文件。但是现在我怎么让webpack加载这个url呢?我的反应如何使用这种依赖性?

当我启动的WebPack-dev的服务器,我会得到以下错误:

ERROR in Entry module not found: Error: Cannot resolve module 'http://api.map.baidu.com/api' 

然后我用小加载器加载的URL。下面是JavaScript代码使用装载机:

import $ from 'jquery' 
import React from 'react'; 
import ReactDOM from 'react-dom'; 
import load from 'little-loader'; 

import './main.css'; 
import './component'; 
import Search from './search/search' 

load('http://api.map.baidu.com/api?v=2.0&ak=gNO2wKVBNupZfafi0bl0sW3dIKqAHn4l', function(err){ 
    console.log('err:', err); 
}); 

// document.body.appendChild(component()); 


ReactDOM.render(<Search />, document.getElementById('search')); 

,但我仍然有以下错误时推出的WebPack:

ERROR in Entry module not found: Error: Cannot resolve module 'http://api.map.baidu.com/api' in /Users/yzzhao/dev/react-demo/webpack_demo 

回答

6

在未来,你应该能够使用动态需要通过System.importWebpack 2将原生支持它们。

System.import('<url>') 
    .then(function() { 
    console.log('Loaded!'); 
    }); 

如果您不想等待它,可以使用脚本加载库。

例子:

安装:

npm install little-loader --save 

用途:

import load from 'little-loader'; 

load('<url>', function(err){ 

}) 

或者做手工

function load(url) { 
    return new Promise(function(resolve, reject) { 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.async = true; 
    script.src = url; 
    script.onload = resolve; 
    script.onerror = reject; 
    document.head.appendChild(script); 
    }) 
} 

load('<url>') 
    .then(function() { 
    console.log('Loaded!'); 
    }) 
    .catch(function(err) { 
    console.error('Something went wrong!', err); 
    }) 
+0

感谢您的回复。我遵循小装载解决方案,但仍然无法正常工作。我已更新我的帖子,以提供我使用的代码。你能不能看一下,让我知道我是否正在使用正确的方式? –

+0

你尝试将'load'重命名为'_load'吗?也许关键字'load'在你的代码中以某种方式保留。 – HaNdTriX

+0

我检查了当我导入这个依赖项时,我从浏览器中得到了以下错误:除非明确打开,否则无法从异步加载的外部脚本写入文档。我如何允许浏览器从异步加载它? –