Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
deno
提交
52a66c27
D
deno
项目概览
张重言
/
deno
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
deno
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
52a66c27
编写于
8月 15, 2019
作者:
N
Nayeem Rahman
提交者:
Ryan Dahl
8月 15, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix import map panics, use import map's location as its base URL (#2770)
上级
d2d3afaf
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
40 addition
and
18 deletion
+40
-18
cli/import_map.rs
cli/import_map.rs
+24
-10
cli/main.rs
cli/main.rs
+1
-0
cli/state.rs
cli/state.rs
+15
-8
未找到文件。
cli/import_map.rs
浏览文件 @
52a66c27
use
deno
::
ErrBox
;
use
deno
::
ModuleSpecifier
;
use
indexmap
::
IndexMap
;
use
serde_json
::
Map
;
...
...
@@ -6,6 +7,7 @@ use std::cmp::Ordering;
use
std
::
error
::
Error
;
use
std
::
fmt
;
use
std
::
fs
;
use
std
::
io
;
use
url
::
Url
;
#[derive(Debug)]
...
...
@@ -44,22 +46,28 @@ pub struct ImportMap {
}
impl
ImportMap
{
pub
fn
load
(
base_url
:
&
str
,
file_name
:
&
str
)
->
Result
<
Self
,
ImportMapError
>
{
let
cwd
=
std
::
env
::
current_dir
()
.unwrap
();
let
resolved_path
=
cwd
.join
(
file_name
);
pub
fn
load
(
file_path
:
&
str
)
->
Result
<
Self
,
ErrBox
>
{
let
file_url
=
ModuleSpecifier
::
resolve_url_or_path
(
file_path
)
?
.to_string
();
let
resolved_path
=
std
::
env
::
current_dir
()
.unwrap
()
.join
(
file_path
);
debug!
(
"Attempt to load import map: {}"
,
resolved_path
.to_str
()
.unwrap
()
);
// Load the contents of import map
match
fs
::
read_to_string
(
&
resolved_path
)
{
Ok
(
json_string
)
=>
ImportMap
::
from_json
(
base_url
,
&
json_string
),
_
=>
panic!
(
"Error retrieving import map file at
\"
{}
\"
"
,
resolved_path
.to_str
()
.unwrap
()
),
}
let
json_string
=
fs
::
read_to_string
(
&
resolved_path
)
.map_err
(|
err
|
{
io
::
Error
::
new
(
io
::
ErrorKind
::
InvalidInput
,
format!
(
"Error retrieving import map file at
\"
{}
\"
: {}"
,
resolved_path
.to_str
()
.unwrap
(),
err
.to_string
()
)
.as_str
(),
)
})
?
;
// The URL of the import map is the base URL for its values.
ImportMap
::
from_json
(
&
file_url
,
&
json_string
)
.map_err
(
ErrBox
::
from
)
}
pub
fn
from_json
(
...
...
@@ -472,6 +480,12 @@ impl ImportMap {
mod
tests
{
use
super
::
*
;
#[test]
fn
load_nonexistent
()
{
let
file_path
=
"nonexistent_import_map.json"
;
assert
!
(
ImportMap
::
load
(
file_path
)
.is_err
());
}
#[test]
fn
from_json_1
()
{
let
base_url
=
"https://deno.land"
;
...
...
cli/main.rs
浏览文件 @
52a66c27
...
...
@@ -115,6 +115,7 @@ fn create_worker_and_state(
// TODO(kevinkassimo): maybe make include_deno_namespace also configurable?
let
state
=
ThreadSafeState
::
new
(
flags
,
argv
,
ops
::
op_selector_std
,
progress
,
true
)
.map_err
(
print_err_and_exit
)
.unwrap
();
let
worker
=
Worker
::
new
(
"main"
.to_string
(),
...
...
cli/state.rs
浏览文件 @
52a66c27
...
...
@@ -200,14 +200,7 @@ impl ThreadSafeState {
let
import_map
:
Option
<
ImportMap
>
=
match
&
flags
.import_map_path
{
None
=>
None
,
Some
(
file_name
)
=>
{
let
base_url
=
match
&
main_module
{
Some
(
module_specifier
)
=>
module_specifier
.clone
(),
None
=>
unreachable!
(),
};
let
import_map
=
ImportMap
::
load
(
&
base_url
.to_string
(),
file_name
)
?
;
Some
(
import_map
)
}
Some
(
file_path
)
=>
Some
(
ImportMap
::
load
(
file_path
)
?
),
};
let
mut
seeded_rng
=
None
;
...
...
@@ -380,3 +373,17 @@ fn thread_safe() {
String
::
from
(
"hello.js"
),
]));
}
#[test]
fn
import_map_given_for_repl
()
{
let
_
result
=
ThreadSafeState
::
new
(
flags
::
DenoFlags
{
import_map_path
:
Some
(
"import_map.json"
.to_string
()),
..
flags
::
DenoFlags
::
default
()
},
vec!
[
String
::
from
(
"./deno"
)],
ops
::
op_selector_std
,
Progress
::
new
(),
true
,
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录