SyntaxError: объявления импорта могут появляться только на верхнем уровне модуля.Используя экспресс, нет веб-пакета - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь импортировать модуль npm в интерфейсный скрипт.Это говорит о том, что модули должны быть на верхнем уровне для импорта, но это на верхнем уровне, что я могу сказать.Возможно, мой веб-сервер работает с моим кодом.Я не уверен

Код сейчас ужасен, потому что я пытаюсь найти все.

Я уже пробовал

<script type='module' src='./js/scripts.js'></script>

scripts.js

import axios from 'axios';


function getQueryStringValue (key) {  
    return decodeURIComponent(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + encodeURIComponent(key).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1"));  
}  
const query = getQueryStringValue('code');

class chime {
    constructor(code) {
        this.code = code;
    };
    async logIn() {
        const response = await axios.post('url', {
            'client_id': '',
            'client_secret': '',
            'grant_type': '',
            'redirect_uri': 'https://localhost:3000',
            'code': this.code
        });

        console.log(response);
    }
    test() {
        console.log(this.code);
    }
}

if (query) {
    const client = new chime(query);

    client.logIn();

};
var express = require('express')
var fs = require('fs')
var https = require('https')
var app = express()
const path = require('path');

const publicPath = path.join(__dirname, '../public');
const port = 3000;

app.use(express.static(publicPath));



app.get('*', (req, res) => {
    res.sendFile(path.join(publicPath, '/index.html'));
});


https.createServer({
  key: fs.readFileSync(path.join(__dirname + '/ssl/server.key')),
  cert: fs.readFileSync(path.join(__dirname+ '/ssl/server.cert'))
}, app)
    .listen(3000, function () {
    console.log('Example app listening on port 3000! Go to https://localhost:3000/')
    });

Я хочу иметь возможность импортировать модули npm.

1 Ответ

0 голосов
/ 28 апреля 2019

import axios from 'axios';

Импорт голого модуля не будет работать в браузере. Вам необходимо использовать относительные пути к файлу, который может обслуживаться вашим веб-сервером (а не просто имя пакета NPM / модуль, экспортируемый пакетом в node_modules, а не обслуживаемом каталоге), или цепочку инструментов, которая может использовать предоставил корень проекта для генерации относительных путей / извлечения кода из node_modules в пакет.

Это говорит о том, что модули должны быть на верхнем уровне для импорта, но это на верхнем уровне, что я могу сказать

Вы не предоставили всю свою настройку, но, используя подразумеваемую иерархию, я получаю Uncaught TypeError: Failed to resolve module specifier "axios". Relative references must start with either "/", "./", or "../". в Chrome, что согласуется с вышеуказанной проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...