首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义particles.js和窗口

未定义particles.js和窗口
EN

Stack Overflow用户
提问于 2017-11-05 19:53:19
回答 2查看 2.6K关注 0票数 0

当我使用node app.js启动我的应用程序时,我会得到以下错误:

代码语言:javascript
复制
/home/ubuntu/workspace/nodeapp/node_modules/particles.js/particles.js:1429
window.requestAnimFrame = (function(){
^

ReferenceError: window is not defined
    at Object.<anonymous> (/home/ubuntu/workspace/nodeapp/node_modules/particles.js/particles.js:1429:1)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/home/ubuntu/workspace/nodeapp/app.js:5:19)
    at Module._compile (module.js:570:32)

我试图使用particles.js作为我的背景,我用npm安装了这个软件包。这里我的app.js是什么样子的:

代码语言:javascript
复制
var express = require("express")
var app = express()
var request = require("request")
var PythonShell = require('python-shell');
var particlesJS = require("particles.js")
app.set("view engine", "ejs")
app.engine('html', require('ejs').renderFile);
app.use(express.static("public")); 

particlesJS.load('particles-js', 'assets/particles.json', function() {
  console.log('callback - particles.js config loaded');
});



app.get("/", function(req, res){
    res.render("main")
})



app.listen(process.env.PORT, process.env.IP, function(){
    console.log("Movie App has started!!!");
})

我将particles.json存储在资产文件夹中。html如下所示:

代码语言:javascript
复制
<html>
    <head>
        <div id="particles-js"></div>
        <script src="particles.js"></script>
        <title>MYMDB</title>
        <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.2.13/semantic.css">
        <link rel="stylesheet" type="text/css" href="/stylesheets/app.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    </head>
    <body>
    </body>
</html>      
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-19 12:59:40

如果您查看particles.js文件,您将看到它正在尝试访问窗口全局变量。

窗口对象是一个浏览器API调用,您无法在服务器端代码中访问它。

因此,将您的require("particles.js")代码移到您可以访问窗口对象的地方就足够了。(请注意,我没有将它分配给particlesJS variable,因为particles.js文件中没有导出。只需向window对象分配一些函数就可以了。)

因此,等待加载window对象:

代码语言:javascript
复制
window.onload = function() {
  require("particles.js");

  particlesJS.load('particles-js', 'assets/particles.json', function() {
  console.log('callback - particles.js config loaded');
  });
};
票数 1
EN

Stack Overflow用户

发布于 2017-11-05 20:02:24

这是因为window是一个浏览器对象,看起来您试图在服务器端在节点中加载particle.js。

尝试将particlesJS.load调用移动到浏览器中。

在其国家预防机制网页上:

初始化window.onload事件上的插件。

代码语言:javascript
复制
window.onload = function() {
  Particles.init({
    selector: '.background'
  });
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47125954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档