为什么我的 import 语句在 Deno 中有语法错误但在 Nodejs 中工作正常?
Why does my import statement have a syntax error in Deno but works ok in Nodejs?
我正在测试两个 VSCode 设置;一个 运行ning Deno,另一个 运行ning Nodejs 使用 Sucrase 编译器转换代码,以便我可以编写原生 ES6 模块。我有一个非常简单的测试:一个小 Class 和一个导入它的模块。这是 Deno VSCode 设置。
我的 VSCode 资源管理器面板如下所示。
PLANNER-CODEBASE
.vscode
launch.json
setting.txt
src
plannerFiles
ClassArrayList.js
main.js
log.ts
.gitignore
.prettierrc
config.ts
deps.ts
index.ts
makefile
readMe.txt
tsconfig.json
我 运行 使用此 launch.json 条目的代码。
{
"name": "Debug Program",
"type": "node",
"request": "launch",
"cwd": "${workspaceFolder}",
"runtimeExecutable": "deno",
"runtimeArgs": ["run", "-A", "--unstable", "--inspect-brk", "./index.ts"],
"port": 9229,
"console": "integratedTerminal"
},
这是index.ts
import main from './src/plannerFiles/main.js'
main()
这是main.js
const main = () => {
console.log('Starting your Planner App')
import { ArrayList } from './ClassArrayList.js'
let myArrayList = new ArrayList()
let row0 = ['11/22/1968', '29', 'Revolution 9', 'Beatles', 'The Beatles [White Album]']
let row1 = ['1960', '6', 'Fools Rush In', 'Frank Sinatra', "Nice 'N' Easy"]
let row2 = ['11/11/1971', '1', 'One of These Days', 'Pink Floyd', 'Meddle']
myArrayList.add(row0)
myArrayList.add(row1)
myArrayList.add(row2)
myArrayList[5] = 'five'
let xx = myArrayList.length
let xxx = myArrayList.getUpperBound()
let x = myArrayList.item(0)
let y = myArrayList[1]
let zzz = myArrayList[5]
myArrayList.clear()
myArrayList = ['LEVEL0INDENT', 50, 100, 75, 75, 100, 100, 100, 100] //first value is for initial space
let z = myArrayList[1]
debugger
// static clear = (obj) => (obj.length = 0)
// ArrayList.clear(myArrayList)
}
export default main
这是ClassArrayList.js
class ArrayList extends Array {
constructor() {
super()
}
add = (obj) => {
this.push(obj)
}
item = (key) => {
let obj = this.valueOf()[key]
return obj
}
getUpperBound = () => {
return this.valueOf().length - 1
}
clear = () => {
this.valueOf().length = 0
}
}
export { ArrayList }
这是我的终端输出。
ramData\chocolatey\bin\deno.exe run -A --unstable --inspect-brk ./index.ts
Debugger listening on ws://127.0.0.1:9229/ws/fd15dc8c-111d-45e4-b09e-651aae5b01c7
error: Expected LParen, got Some(LBrace) at file:///C:/Users/Bruce/Dropbox/Code/DENO%20BACKEND/Planner-Codebase/src/plannerFiles/main.js:4:9
我不知道出了什么问题或如何解决。任何帮助将不胜感激。
不是在函数内部导入模块,而是像这样移到外部。如果你想延迟加载模块使用 dynamic import
试试这个:
import { ArrayList } from './ClassArrayList.js'
const main = () => {
console.log('Starting your Planner App');
let myArrayList = new ArrayList();
let row0 = ['11/22/1968', '29', 'Revolution 9', 'Beatles', 'The Beatles [White Album]']
let row1 = ['1960', '6', 'Fools Rush In', 'Frank Sinatra', "Nice 'N' Easy"]
let row2 = ['11/11/1971', '1', 'One of These Days', 'Pink Floyd', 'Meddle']
myArrayList.add(row0)
myArrayList.add(row1)
myArrayList.add(row2)
myArrayList[5] = 'five'
let xx = myArrayList.length
let xxx = myArrayList.getUpperBound()
let x = myArrayList.item(0)
let y = myArrayList[1]
let zzz = myArrayList[5]
myArrayList.clear()
myArrayList = ['LEVEL0INDENT', 50, 100, 75, 75, 100, 100, 100, 100] //first value is for initial space
let z = myArrayList[1]
debugger
// static clear = (obj) => (obj.length = 0)
// ArrayList.clear(myArrayList)
}
export default main
我正在测试两个 VSCode 设置;一个 运行ning Deno,另一个 运行ning Nodejs 使用 Sucrase 编译器转换代码,以便我可以编写原生 ES6 模块。我有一个非常简单的测试:一个小 Class 和一个导入它的模块。这是 Deno VSCode 设置。
我的 VSCode 资源管理器面板如下所示。
PLANNER-CODEBASE
.vscode
launch.json
setting.txt
src
plannerFiles
ClassArrayList.js
main.js
log.ts
.gitignore
.prettierrc
config.ts
deps.ts
index.ts
makefile
readMe.txt
tsconfig.json
我 运行 使用此 launch.json 条目的代码。
{
"name": "Debug Program",
"type": "node",
"request": "launch",
"cwd": "${workspaceFolder}",
"runtimeExecutable": "deno",
"runtimeArgs": ["run", "-A", "--unstable", "--inspect-brk", "./index.ts"],
"port": 9229,
"console": "integratedTerminal"
},
这是index.ts
import main from './src/plannerFiles/main.js'
main()
这是main.js
const main = () => {
console.log('Starting your Planner App')
import { ArrayList } from './ClassArrayList.js'
let myArrayList = new ArrayList()
let row0 = ['11/22/1968', '29', 'Revolution 9', 'Beatles', 'The Beatles [White Album]']
let row1 = ['1960', '6', 'Fools Rush In', 'Frank Sinatra', "Nice 'N' Easy"]
let row2 = ['11/11/1971', '1', 'One of These Days', 'Pink Floyd', 'Meddle']
myArrayList.add(row0)
myArrayList.add(row1)
myArrayList.add(row2)
myArrayList[5] = 'five'
let xx = myArrayList.length
let xxx = myArrayList.getUpperBound()
let x = myArrayList.item(0)
let y = myArrayList[1]
let zzz = myArrayList[5]
myArrayList.clear()
myArrayList = ['LEVEL0INDENT', 50, 100, 75, 75, 100, 100, 100, 100] //first value is for initial space
let z = myArrayList[1]
debugger
// static clear = (obj) => (obj.length = 0)
// ArrayList.clear(myArrayList)
}
export default main
这是ClassArrayList.js
class ArrayList extends Array {
constructor() {
super()
}
add = (obj) => {
this.push(obj)
}
item = (key) => {
let obj = this.valueOf()[key]
return obj
}
getUpperBound = () => {
return this.valueOf().length - 1
}
clear = () => {
this.valueOf().length = 0
}
}
export { ArrayList }
这是我的终端输出。
ramData\chocolatey\bin\deno.exe run -A --unstable --inspect-brk ./index.ts
Debugger listening on ws://127.0.0.1:9229/ws/fd15dc8c-111d-45e4-b09e-651aae5b01c7
error: Expected LParen, got Some(LBrace) at file:///C:/Users/Bruce/Dropbox/Code/DENO%20BACKEND/Planner-Codebase/src/plannerFiles/main.js:4:9
我不知道出了什么问题或如何解决。任何帮助将不胜感激。
不是在函数内部导入模块,而是像这样移到外部。如果你想延迟加载模块使用 dynamic import
试试这个:
import { ArrayList } from './ClassArrayList.js'
const main = () => {
console.log('Starting your Planner App');
let myArrayList = new ArrayList();
let row0 = ['11/22/1968', '29', 'Revolution 9', 'Beatles', 'The Beatles [White Album]']
let row1 = ['1960', '6', 'Fools Rush In', 'Frank Sinatra', "Nice 'N' Easy"]
let row2 = ['11/11/1971', '1', 'One of These Days', 'Pink Floyd', 'Meddle']
myArrayList.add(row0)
myArrayList.add(row1)
myArrayList.add(row2)
myArrayList[5] = 'five'
let xx = myArrayList.length
let xxx = myArrayList.getUpperBound()
let x = myArrayList.item(0)
let y = myArrayList[1]
let zzz = myArrayList[5]
myArrayList.clear()
myArrayList = ['LEVEL0INDENT', 50, 100, 75, 75, 100, 100, 100, 100] //first value is for initial space
let z = myArrayList[1]
debugger
// static clear = (obj) => (obj.length = 0)
// ArrayList.clear(myArrayList)
}
export default main